@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
3 lines • 549 kB
JavaScript
var bp=Object.create;var Ji=Object.defineProperty,gp=Object.defineProperties,Pp=Object.getOwnPropertyDescriptor,Ap=Object.getOwnPropertyDescriptors,wp=Object.getOwnPropertyNames,ca=Object.getOwnPropertySymbols,kp=Object.getPrototypeOf,ou=Object.prototype.hasOwnProperty,Wl=Object.prototype.propertyIsEnumerable;var Dl=(s,e,t)=>e in s?Ji(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,N=(s,e)=>{for(var t in e||(e={}))ou.call(e,t)&&Dl(s,t,e[t]);if(ca)for(var t of ca(e))Wl.call(e,t)&&Dl(s,t,e[t]);return s},E=(s,e)=>gp(s,Ap(e));var tt=(s,e)=>{var t={};for(var n in s)ou.call(s,n)&&e.indexOf(n)<0&&(t[n]=s[n]);if(s!=null&&ca)for(var n of ca(s))e.indexOf(n)<0&&Wl.call(s,n)&&(t[n]=s[n]);return t};var Tp=(s,e)=>{for(var t in e)Ji(s,t,{get:e[t],enumerable:!0})},ql=(s,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of wp(e))!ou.call(s,o)&&o!==t&&Ji(s,o,{get:()=>e[o],enumerable:!(n=Pp(e,o))||n.enumerable});return s};var re=(s,e,t)=>(t=s!=null?bp(kp(s)):{},ql(e||!s||!s.__esModule?Ji(t,"default",{value:s,enumerable:!0}):t,s)),hp=s=>ql(Ji({},"__esModule",{value:!0}),s);var Zb={};Tp(Zb,{ACCOUNT_TYPE_SIZE:()=>Bp,ALL_PROGRAM_ID:()=>Ht,AMM_CONFIG_SEED:()=>Um,AMM_STABLE:()=>Im,AMM_V4:()=>fi,ANAMint:()=>Dp,API_URLS:()=>it,AUTH_SEED:()=>Hd,AccountType:()=>zl,Api:()=>aa,BIT_PRECISION:()=>Lu,BNDivCeil:()=>xn,BNLayout:()=>ko,BN_100:()=>Vb,BN_1000:()=>Eb,BN_10000:()=>Db,BN_FIVE:()=>_b,BN_NEGATIVE_ONE:()=>Qf,BN_ONE:()=>pt,BN_TEN:()=>go,BN_THREE:()=>vb,BN_TWO:()=>Fb,BN_ZERO:()=>Z,BitStructure:()=>Jp,Blob:()=>ku,BondingCurveParam:()=>_s,CLMM_LOCK_AUTH_ID:()=>yi,CLMM_LOCK_PROGRAM_ID:()=>qo,CLMM_PROGRAM_ID:()=>_n,CLOCK_PROGRAM_ID:()=>Rp,CONFIG_SEED:()=>Qd,CREATE_CPMM_POOL_AUTH:()=>Ua,CREATE_CPMM_POOL_FEE_ACC:()=>xm,CREATE_CPMM_POOL_PROGRAM:()=>Xn,CREATOR_FEE_VAULT_AUTH_SEED:()=>Jd,Clmm:()=>Ii,ClmmConfigLayout:()=>Ya,ClmmInstrument:()=>ke,CollectFeeOn:()=>Xa,ConstantProductCurve:()=>Wi,CpmmConfigInfoLayout:()=>$c,CpmmCreatorFeeOn:()=>ll,CpmmFee:()=>an,CpmmPermission:()=>lb,CpmmPoolInfoLayout:()=>Gr,Currency:()=>ci,CurrencyAmount:()=>bo,Curve:()=>qt,CurveBase:()=>mo,CurveCalculator:()=>Ui,DEVNET_PROGRAM_ID:()=>Tn,DEV_API_URLS:()=>Il,DEV_FARM_LOCK_MINT:()=>Sy,DEV_FARM_LOCK_VAULT:()=>Ky,DEV_LAUNCHPAD_AUTH:()=>Ef,DEV_LAUNCHPAD_PROGRAM:()=>Vf,DEV_LOOKUP_TABLE_CACHE:()=>_o,DYNAMIC_CONFIG_INDEX:()=>jf,DYNAMIC_FEE_CONFIG_SEED:()=>Zm,DYNAMIC_FEE_CONTROL_DENOMINATOR:()=>Mu,DataElement:()=>Kd,DynamicFeeConfigLayout:()=>ey,DynamicFeeInfo:()=>Qo,DynamicFeeInfoLayout:()=>Vm,ETHMint:()=>Wp,EXTENSION_TICKARRAY_BITMAP_SIZE:()=>zo,FARM_LOCK_MINT:()=>fc,FARM_LOCK_VAULT:()=>yc,FARM_PROGRAM_ID_V3:()=>Va,FARM_PROGRAM_ID_V4:()=>Ea,FARM_PROGRAM_ID_V5:()=>Da,FARM_PROGRAM_ID_V6:()=>Wo,FARM_PROGRAM_TO_VERSION:()=>dn,FARM_VERSION_TO_LEDGER_LAYOUT:()=>Ki,FARM_VERSION_TO_STATE_LAYOUT:()=>Si,FEE_DESTINATION_ID:()=>qa,FEE_RATE_DENOMINATOR:()=>Yn,FEE_RATE_DENOMINATOR_VALUE:()=>et,FeeOn:()=>Jc,FixedPriceCurve:()=>jr,Fraction:()=>Ae,INSTRUCTION_PROGRAM_ID:()=>or,InstructionType:()=>Y,JupTokenType:()=>ac,LAUNCHPAD_AUTH:()=>Sm,LAUNCHPAD_CONFIG:()=>Cm,LAUNCHPAD_PLATFORM:()=>Km,LAUNCHPAD_PROGRAM:()=>lt,LIQUIDITY_FEES_DENOMINATOR:()=>Rr,LIQUIDITY_FEES_NUMERATOR:()=>ws,LIQUIDITY_POOL_PROGRAM_ID_V5_MODEL:()=>pr,LIQUIDITY_VERSION_TO_SERUM_VERSION:()=>Td,LIQUIDITY_VERSION_TO_STATE_LAYOUT:()=>Ey,LOCK_CPMM_AUTH:()=>bi,LOCK_CPMM_PROGRAM:()=>Uo,LOCK_LIQUIDITY_SEED:()=>Gd,LOG_B_2_X32:()=>Ku,LOG_B_P_ERR_MARGIN_LOWER_X64:()=>Cu,LOG_B_P_ERR_MARGIN_UPPER_X64:()=>Ru,LOOKUP_TABLE_CACHE:()=>vo,LaunchConstantProductCurve:()=>Qr,LaunchpadConfig:()=>co,LaunchpadMintProgramBit:()=>op,LaunchpadPool:()=>Sn,LaunchpadPoolInitParam:()=>ea,LaunchpadVesting:()=>db,Layout:()=>di,LimitOrderLayout:()=>ho,LimitOrderMath:()=>ro,LimitOrderNonceLayout:()=>Du,LinearPriceCurve:()=>Jr,LiquidityMathUtil:()=>ft,LockClPositionLayoutV2:()=>Wu,LockPositionLayout:()=>ty,LogLevel:()=>Ul,Logger:()=>la,MAGIC_SQRT_10001:()=>Gf,MARKET_STATE_LAYOUT_V2:()=>Ls,MARKET_STATE_LAYOUT_V3:()=>Hs,MARKET_VERSION_TO_STATE_LAYOUT:()=>bl,MAX_BASE64_SIZE:()=>fu,MAX_FEE_RATE:()=>zf,MAX_FEE_RATE_NUMERATOR:()=>br,MAX_SQRT_PRICE_X64:()=>Mt,MAX_TICK:()=>gn,MAX_TICK_SPACING:()=>Xf,MEMO_PROGRAM_ID:()=>cn,METADATA_PROGRAM_ID:()=>An,MIN_SQRT_PRICE_X64:()=>Nt,MIN_TICK:()=>bn,MODEL_DATA_PUBKEY:()=>io,Market:()=>na,MathLaunch:()=>Qi,NRVMint:()=>Ep,OBSERVATION_NUM:()=>Fu,OBSERVATION_UPDATE_DURATION_DEFAULT:()=>Hf,OPEN_BOOK_PROGRAM:()=>Wa,OPERATION_SEED:()=>Xm,OPERATION_SIZE_USIZE:()=>vu,ObservationItemLayout:()=>_m,ObservationLayout:()=>Vu,OperationLayout:()=>Eu,OptionLayout:()=>Na,Owner:()=>wn,PAIMint:()=>Op,PERMISSION_SEED:()=>jm,PLATFORM_ALLOW_CONFIG_SEED:()=>tp,PLATFORM_FEE_VAULT_AUTH_SEED:()=>$d,PLATFORM_GLOBAL_ACCESS_SEED:()=>ep,PLATFORM_SEED:()=>jd,POOL_LOCK_ID_SEED:()=>$u,POOL_OBSERVATION_SEED:()=>Hm,POOL_REWARD_VAULT_SEED:()=>Gm,POOL_SEED:()=>kr,POOL_TICK_ARRAY_BITMAP_SEED:()=>Ym,POOL_VAULT_SEED:()=>Za,POOL_VESTING_SEED:()=>Zd,POSITION_SEED:()=>zu,Percent:()=>at,PersonalPositionLayout:()=>Pr,PlatformConfig:()=>Kn,PlatformCurveParam:()=>Yd,PoolFee:()=>hi,PoolFetchType:()=>sc,PoolInfoLayout:()=>To,PoolStatusBitFlag:()=>Nm,PoolStatusBitIndex:()=>Om,PoolUtil:()=>tn,PoolUtils:()=>At,PositionRewardInfoLayout:()=>Dm,PositionUtils:()=>rc,Price:()=>ht,ProtocolPositionLayout:()=>Jf,Q128:()=>za,Q64:()=>ve,RAYMint:()=>Lp,REDUCTION_FACTOR_DENOMINATOR:()=>Nu,RENT_PROGRAM_ID:()=>Tt,RESOLUTION:()=>Go,REWARD_NUM:()=>Ai,Raydium:()=>ra,RewardInfoLayout:()=>Em,RewardState:()=>Mm,RoundDirection:()=>Wc,Rounding:()=>da,Router:()=>Bm,SERUM_PROGRAMID_TO_VERSION:()=>fl,SERUM_PROGRAM_ID_V3:()=>dr,SERUM_VERSION_TO_PROGRAMID:()=>yl,SESSION_KEY:()=>Bl,SOLMint:()=>Ot,SOL_INFO:()=>Mn,SPL_MINT_LAYOUT:()=>Ga,SRMMint:()=>Np,STORAGE_KEY:()=>$s,SUPPORT_MINT_SEED:()=>Qm,SYSTEM_PROGRAM_ID:()=>lu,SqrtPriceMath:()=>ki,StableLayout:()=>Mr,Structure:()=>Ma,SwapMathUtil:()=>Ti,SwapState:()=>Bn,TICK_ARRAY_BITMAP_SIZE:()=>yr,TICK_ARRAY_SEED:()=>zm,TICK_ARRAY_SIZE:()=>en,TICK_ARRAY_SIZE_USIZE:()=>Yf,TICK_TO_SQRT_PRICE_FACTORS:()=>Ou,TOKEN_WSOL:()=>Lt,TickArrayBitmapExtensionLayout:()=>Ar,TickArrayBitmapUtil:()=>Qn,TickArrayLayout:()=>Xo,TickArrayUtil:()=>he,TickLayout:()=>Wm,TickUtil:()=>se,Token:()=>We,TokenAmount:()=>Ce,TradeDirection:()=>Wd,TradeDirectionOpposite:()=>qd,TxBuilder:()=>sr,TxVersion:()=>Un,U128_MAX:()=>fr,U256_MAX:()=>dy,U64_IGNORE_RANGE:()=>$f,U64_MAX:()=>En,UInt:()=>Ca,USDCMint:()=>Mp,USDHMint:()=>Vp,USDTMint:()=>Fp,UTIL1216:()=>hm,Union:()=>Fa,UpdateAmmConfigParam:()=>Fm,UpdateOperationAccountParam:()=>vm,VOLATILITY_ACCUMULATOR_SCALE:()=>Pi,VestingSchedule:()=>Xd,Voter:()=>pc,VoterDepositEntry:()=>cd,VoterLockup:()=>ud,VoterRegistrar:()=>dc,VoterVotingMintConfig:()=>sd,WHITE_MINT_SIZE_USIZE:()=>_u,WSOLMint:()=>ee,WideBits:()=>cr,WrappedLayout:()=>Gn,_100_PERCENT:()=>pu,abs:()=>Ty,accountMeta:()=>T,add:()=>Mb,addComputeBudget:()=>ir,addLiquidityLayout:()=>Is,anchorDataBuf:()=>Ct,array:()=>Mf,associatedLedgerAccountLayout:()=>ns,bits:()=>La,blob:()=>xe,bool:()=>Je,buyExactInInstruction:()=>zi,buyExactOutInstruction:()=>ol,calFarmRewardAmount:()=>bs,ceilDiv:()=>qi,ceilDivBN:()=>xo,checkLegacyTxSize:()=>li,checkPoolToAmm:()=>Ab,checkV0TxSize:()=>mi,checkedAdd:()=>iy,checkedMul:()=>ay,checkedSub:()=>ry,chunkArray:()=>ma,claimCreatorFee:()=>Ys,claimPlatformFee:()=>zs,claimPlatformFeeFromVault:()=>Xs,claimVestedToken:()=>Us,clearBit:()=>Py,clmmComputeInfoToApiInfo:()=>ic,closeAccountInstruction:()=>zn,closePlatformAllowConfigIns:()=>cl,collectCpFeeInstruction:()=>Fs,collectCreatorFeePermissionlessInInstruction:()=>Zc,commonSystemAccountMeta:()=>ya,confirmTransaction:()=>rr,cpmmLockPositionInstruction:()=>zd,createAssociatedLedgerAccountInstruction:()=>Li,createLogger:()=>Se,createPlatformAllowConfigIns:()=>ul,createPlatformConfig:()=>rl,createPlatformVestingAccountIns:()=>sl,createPoolFeeLayout:()=>Oc,createPoolV4InstructionV2:()=>Ks,createPoolV4Layout:()=>Vy,createVestingAccount:()=>Gs,createWSolAccountInstructions:()=>oo,cstr:()=>Cf,currencyEquals:()=>qp,decimalToFraction:()=>Gb,decimalToX64:()=>Bo,decodeBool:()=>ym,div:()=>Rb,divCeil:()=>Er,divRoundingUp:()=>Tr,dwLayout:()=>Zt,encodeBool:()=>bm,endlessRetry:()=>Qb,eq:()=>up,f32:()=>If,f32be:()=>Bf,f64:()=>xf,f64be:()=>Sf,farmAddRewardLayout:()=>as,farmLedgerLayoutV3_1:()=>By,farmLedgerLayoutV3_2:()=>xi,farmLedgerLayoutV5_1:()=>xy,farmLedgerLayoutV5_2:()=>lc,farmLedgerLayoutV6_1:()=>mc,farmRewardInfoToConfig:()=>Tc,farmRewardLayout:()=>is,farmRewardRestartLayout:()=>rs,farmRewardTimeInfoLayout:()=>ad,farmStateV3Layout:()=>uc,farmStateV5Layout:()=>cc,farmStateV6Layout:()=>Bi,fetchMultipleFarmInfoAndUpdate:()=>Ly,fetchMultipleMintInfos:()=>yo,fetchTickArrays:()=>tc,findProgramAddress:()=>ae,fixedSwapInLayout:()=>ks,fixedSwapOutLayout:()=>Ts,floorDiv:()=>Ur,forecastTransactionSize:()=>ar,formatLayout:()=>Od,fromSignedI128:()=>ky,generatePubKey:()=>ct,getATAAddress:()=>ne,getAssociatedAuthority:()=>kc,getAssociatedConfigId:()=>vr,getAssociatedLedgerAccount:()=>zt,getAssociatedLedgerPoolAccount:()=>Ri,getAssociatedOpenOrders:()=>_d,getAssociatedPoolKeys:()=>Rs,getCollectFeeOnDescription:()=>Zf,getCpLockPda:()=>ni,getCpmmPdaAmmConfigId:()=>sb,getCpmmPdaPoolId:()=>Os,getCreatePoolKeys:()=>Ns,getDate:()=>gc,getDepositEntryIndex:()=>gs,getDevLookupTableCache:()=>ha,getDxByDyBaseIn:()=>vc,getDyByDxBaseIn:()=>Fc,getEpochInfo:()=>Yp,getFarmLedgerLayout:()=>$o,getFarmStateLayout:()=>fd,getLaunchpadPoolMintAProgram:()=>Yr,getLaunchpadPoolMintBProgram:()=>Pb,getLaunchpadPoolMintProgram:()=>ml,getLiquidityAssociatedAuthority:()=>Cs,getLiquidityAssociatedId:()=>So,getMainLookupTableCache:()=>Ta,getMax:()=>Nb,getMultipleAccountsInfo:()=>Rt,getMultipleAccountsInfoWithCustomFlags:()=>Ue,getMultipleLookupTableInfo:()=>ka,getOrderTick:()=>hy,getPdaAmmConfigId:()=>ny,getPdaCpiEvent:()=>lo,getPdaCreatorFeeVaultAuth:()=>qs,getPdaCreatorVault:()=>Rn,getPdaDynamicFeeConfigAddress:()=>oy,getPdaExBitmapAccount:()=>Ze,getPdaLaunchpadAuth:()=>jt,getPdaLaunchpadConfigId:()=>Vs,getPdaLaunchpadPoolId:()=>ii,getPdaLaunchpadVaultId:()=>Es,getPdaLimitOrderAddress:()=>Zu,getPdaLimitOrderNonceAddress:()=>ju,getPdaLockClPositionIdV2:()=>Yo,getPdaLockPositionId:()=>$a,getPdaLpMint:()=>Ud,getPdaMetadataKey:()=>Hn,getPdaMintExAccount:()=>Io,getPdaMintExAccountCp:()=>Ms,getPdaObservationAccount:()=>ja,getPdaObservationId:()=>Co,getPdaOperationAccount:()=>wi,getPdaPermission:()=>Yu,getPdaPermissionId:()=>Gc,getPdaPermissionedPoolId:()=>Hu,getPdaPersonalPositionAddress:()=>mn,getPdaPlatformAllowConfig:()=>Gi,getPdaPlatformConfigAccess:()=>fb,getPdaPlatformFeeVaultAuth:()=>Ws,getPdaPlatformId:()=>Ds,getPdaPlatformVault:()=>Cn,getPdaPoolAuthority:()=>Ko,getPdaPoolId:()=>Xu,getPdaPoolRewardVaultId:()=>Qu,getPdaPoolVaultId:()=>ln,getPdaProtocolPositionAddress:()=>hn,getPdaTickArrayAddress:()=>Ee,getPdaVault:()=>Uc,getPdaVestId:()=>ri,getRecentBlockHash:()=>Vo,getRegistrarAddress:()=>ls,getSessionKey:()=>dp,getStablePrice:()=>_c,getTime:()=>Ci,getTimestamp:()=>Ry,getTokenOwnerRecordAddress:()=>ys,getTransferAmountFee:()=>_y,getTransferAmountFeeFromPost:()=>Jo,getTransferAmountFeeFromPre:()=>Fi,getTransferAmountFeeV2:()=>St,getVoterAddress:()=>ps,getVoterWeightRecordAddress:()=>fs,getVotingMintAuthority:()=>ds,getVotingTokenMint:()=>ms,governanceCreateTokenOwnerRecord:()=>Ad,greedy:()=>ef,gt:()=>sp,gte:()=>Cb,i128:()=>Iu,i32ToBytes:()=>Qa,i32ToBytesBE:()=>qu,i64:()=>Eo,i8:()=>hu,initPoolLayout:()=>hs,initTokenAccountInstruction:()=>_a,initialize:()=>yb,initializeMarket:()=>Vd,initializeV2:()=>tl,initializeWithPermission:()=>jc,initializeWithToken2022:()=>nl,intersection:()=>Xb,isBitSet:()=>by,isDateAfter:()=>Ac,isDateBefore:()=>Pc,isDecimal:()=>zb,isMeaningfulNumber:()=>Ob,isNumber:()=>bc,isValidFarmVersion:()=>us,jsonInfo2PoolKeys:()=>nt,judgeFarmType:()=>Oy,leastSignificantBit:()=>yy,liquidityStateV4Layout:()=>vi,liquidityStateV5Layout:()=>hd,lt:()=>Sb,lte:()=>Kb,mSOLMint:()=>vp,makeAMMSwapInstruction:()=>Nr,makeAMMSwapV2Instruction:()=>Or,makeAddLiquidityInstruction:()=>Nc,makeAddNewRewardInstruction:()=>As,makeCollectCreatorFeeInstruction:()=>vs,makeCpmmLockInstruction:()=>Qc,makeCreateCpmmPoolInInstruction:()=>zc,makeCreateFarmInstruction:()=>hc,makeCreateMarketInstruction:()=>Vr,makeCreatorWithdrawFarmRewardInstruction:()=>Ic,makeDepositCpmmInInstruction:()=>Xc,makeDepositInstructionV3:()=>xc,makeDepositInstructionV5:()=>Sc,makeDepositInstructionV6:()=>Kc,makeDepositTokenInstruction:()=>My,makeDepositWithdrawInstruction:()=>vy,makeInitPoolInstructionV4:()=>Wy,makeRestartRewardInstruction:()=>Ps,makeSwapCpmmBaseInInstruction:()=>oi,makeSwapCpmmBaseOutInstruction:()=>Hc,makeSwapFixedInInstruction:()=>Id,makeSwapFixedOutInstruction:()=>Bd,makeSwapInstruction:()=>Al,makeTransferInstruction:()=>Su,makeWithdrawCpmmInInstruction:()=>Yc,makeWithdrawInstructionV3:()=>Mi,makeWithdrawInstructionV4:()=>Bc,makeWithdrawInstructionV5:()=>Ni,makeWithdrawInstructionV6:()=>Oi,makeWithdrawTokenInstruction:()=>Fy,mask:()=>es,minExpirationTime:()=>Zn,mockV3CreatePoolInfo:()=>gr,modelDataInfoLayout:()=>Cd,mostSignificantBit:()=>Ju,mul:()=>js,mulDivCeil:()=>je,mulDivFloor:()=>Ye,mulDivRound:()=>uy,mulFull:()=>sy,notInnerObject:()=>pd,ns64:()=>gf,ns64be:()=>hf,nu64:()=>rf,nu64be:()=>mf,offset:()=>Oa,offsetDateTime:()=>Cy,option:()=>Lf,parseBigNumberish:()=>me,parseNumberInfo:()=>Mo,parseSimulateLogToJson:()=>zp,parseSimulateValue:()=>Xp,parseTokenAccountResp:()=>xu,parseTokenInfo:()=>Df,poolLpAuthority:()=>Lc,poolTypeV6:()=>ao,printSimulate:()=>Po,publicKey:()=>M,realFarmStateV3Layout:()=>od,realFarmStateV5Layout:()=>id,realFarmV6Layout:()=>rd,removeLiquidityInstruction:()=>Ss,removeLiquidityLayout:()=>Bs,removePlatformCurveParamInstruction:()=>gb,route1Instruction:()=>kb,route2Instruction:()=>Tb,routeInstruction:()=>ip,rustEnum:()=>Nf,s16:()=>pf,s16be:()=>Pf,s24:()=>ff,s24be:()=>Af,s32:()=>bt,s32be:()=>wf,s40:()=>yf,s40be:()=>kf,s48:()=>bf,s48be:()=>Tf,s8:()=>df,sellExactInInstruction:()=>Xr,sellExactOut:()=>il,seq:()=>J,setBit:()=>gy,setLoggerLevel:()=>Ip,shakeFractionDecimal:()=>lp,simulateMultipleInstruction:()=>Gp,simulatePoolInfoInstruction:()=>Dy,simulateTransaction:()=>nm,sleep:()=>wc,solToWSol:()=>Vt,solToWSolToken:()=>qf,splAccountLayout:()=>kn,splitNumber:()=>uu,stSOLMint:()=>_p,str:()=>Et,struct:()=>v,sub:()=>Lb,swapBaseInAutoAccount:()=>hb,swapBaseInV2Instruction:()=>xd,swapBaseOutAutoAccount:()=>Ib,swapBaseOutV2Instruction:()=>Sd,swapInternal:()=>ts,tagged:()=>Of,tenExponential:()=>Aa,toAmmComputePoolInfo:()=>_r,toApiV3Token:()=>Bt,toBN:()=>mp,toBuffer:()=>yu,toFeeConfig:()=>Vn,toFraction:()=>hl,toFractionWithDecimals:()=>xb,toLaunchpadMintProgramFlag:()=>dl,toPercent:()=>Wb,toSignedI128:()=>wy,toToken:()=>gi,toTokenAmount:()=>gt,toTokenInfo:()=>Wf,toTokenPrice:()=>qb,toTotalPrice:()=>Ub,toTransferFeeConfig:()=>po,toUsdCurrency:()=>Tl,toggleBit:()=>Ay,transformTxToBase64:()=>Hp,tryParsePublicKey:()=>ga,txToBase64:()=>om,u128:()=>pe,u128CheckedMul:()=>my,u128SaturatingAdd:()=>cy,u128SaturatingSub:()=>ly,u16:()=>ut,u16ToBytes:()=>wr,u16ToBytesBE:()=>Ha,u16be:()=>af,u24:()=>tf,u24be:()=>sf,u256MulDivCeil:()=>fy,u256MulDivFloor:()=>py,u32:()=>Qe,u32be:()=>uf,u40:()=>nf,u40be:()=>cf,u48:()=>of,u48be:()=>lf,u64:()=>w,u64ToBytes:()=>Uu,u8:()=>V,u8ToBytes:()=>Gu,union:()=>Ff,unionArr:()=>Bb,unionLayoutDiscriminator:()=>Kf,uniq:()=>Hb,updateFarmPoolInfo:()=>yd,updatePlatformConfig:()=>al,updatePlatformCurveParamInstruction:()=>bb,updateReqHistory:()=>sa,usdMintBSet:()=>wb,utf8:()=>Rf,validateAndParsePublicKey:()=>ba,validateFarmRewards:()=>cs,vec:()=>Bu,vecU8:()=>gm,voterStakeRegistryCreateDepositEntry:()=>kd,voterStakeRegistryCreateVoter:()=>wd,voterStakeRegistryDeposit:()=>bd,voterStakeRegistryUpdateVoterWeightRecord:()=>gd,voterStakeRegistryWithdraw:()=>Pd,wSolToSolToken:()=>Uf,withdrawRewardLayout:()=>os,wrappingSubU128:()=>Gt,x64ToDecimal:()=>ec,xor:()=>Yb,zeros:()=>vf});module.exports=hp(Zb);var Kl=re(require("axios"));var au=require("@solana/web3.js");var Fo=require("lodash"),Ul=(o=>(o[o.Error=0]="Error",o[o.Warning=1]="Warning",o[o.Info=2]="Info",o[o.Debug=3]="Debug",o))(Ul||{}),la=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}},iu={},Gl={};function Se(s){let e=(0,Fo.get)(iu,s);if(!e){let t=(0,Fo.get)(Gl,s);e=new la({name:s,logLevel:t}),(0,Fo.set)(iu,s,e)}return e}function Ip(s,e){(0,Fo.set)(Gl,s,e);let t=(0,Fo.get)(iu,s);t&&(t.level=e)}var fo=require("@solana/spl-token"),ru=Se("Raydium_accountInfo_util");async function Rt(s,e,t){let{batchRequest:n,commitment:o="confirmed",chunkCount:i=100}=N({batchRequest:!1},t),r=ma(e,i),a=new Array(r.length).fill([]);if(n){let c=r.map(d=>{let p=s._buildArgs([d.map(m=>m.toBase58())],o,"base64");return{methodName:"getMultipleAccounts",args:p}}),u=ma(c,10);a=(await(await Promise.all(u.map(async d=>await s._rpcBatchRequest(d)))).flat()).map(d=>(d.error&&ru.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${d.error.message}`),d.result.value.map(p=>{if(p){let{data:m,executable:f,lamports:y,owner:b,rentEpoch:g}=p;return m.length!==2&&m[1]!=="base64"&&ru.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(m[0],"base64"),executable:f,lamports:y,owner:new au.PublicKey(b),rentEpoch:g}}return null})))}else try{a=await Promise.all(r.map(c=>s.getMultipleAccountsInfo(c,o)))}catch(c){c instanceof Error&&ru.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function Ue(s,e,t){let n=await Rt(s,e.map(o=>o.pubkey),t);return e.map((o,i)=>E(N({},o),{accountInfo:n[i]}))}var zl=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",n))(zl||{}),Bp=1;async function yo({connection:s,mints:e,config:t}){var i,r,a;if(e.length===0)return{};let n=await Ue(s,e.map(c=>({pubkey:Vt(c)})),t),o={};for(let c of n){if(!c.accountInfo||c.accountInfo.data.length<fo.MINT_SIZE){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=(0,fo.unpackMint)(c.pubkey,c.accountInfo,(i=c.accountInfo)==null?void 0:i.owner);o[c.pubkey.toString()]=E(N({},u),{programId:((r=c.accountInfo)==null?void 0:r.owner)||fo.TOKEN_PROGRAM_ID,feeConfig:(a=(0,fo.getTransferFeeConfig)(u))!=null?a:void 0})}return o[au.PublicKey.default.toBase58()]=o[ee.toBase58()],o}var kt=re(require("bn.js")),cp=re(require("decimal.js"));var Zl=re(require("big.js")),to=re(require("bn.js"));var Xl=re(require("toformat")),xp=Xl.default,er=xp;var tr=re(require("big.js")),Hl=re(require("bn.js")),Ql=re(require("decimal.js-light"));var ui=re(require("bn.js"));var da=(n=>(n[n.ROUND_DOWN=0]="ROUND_DOWN",n[n.ROUND_HALF_UP=1]="ROUND_HALF_UP",n[n.ROUND_UP=2]="ROUND_UP",n))(da||{}),Yl=9007199254740991;function me(s){let e=Se("Raydium_parseBigNumberish");if(s instanceof ui.default)return s;if(typeof s=="string"){if(s.match(/^-?[0-9]+$/))return new ui.default(s);e.logWithError(`invalid BigNumberish string: ${s}`)}return typeof s=="number"?(s%1&&e.logWithError(`BigNumberish number underflow: ${s}`),(s>=Yl||s<=-Yl)&&e.logWithError(`BigNumberish number overflow: ${s}`),new ui.default(String(s))):typeof s=="bigint"?new ui.default(s.toString()):(e.error(`invalid BigNumberish value: ${s}`),new ui.default(0))}var pa=Se("module/fraction"),su=er(tr.default),nr=er(Ql.default),Sp={[0]:nr.ROUND_DOWN,[1]:nr.ROUND_HALF_UP,[2]:nr.ROUND_UP},Kp={[0]:tr.default.roundDown,[1]:tr.default.roundHalfUp,[2]:tr.default.roundUp},Ae=class{constructor(e,t=new Hl.default(1)){this.numerator=me(e),this.denominator=me(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new Ae(this.denominator,this.numerator)}add(e){let t=e instanceof Ae?e:new Ae(me(e));return this.denominator.eq(t.denominator)?new Ae(this.numerator.add(t.numerator),this.denominator):new Ae(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof Ae?e:new Ae(me(e));return this.denominator.eq(t.denominator)?new Ae(this.numerator.sub(t.numerator),this.denominator):new Ae(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof Ae?e:new Ae(me(e));return new Ae(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof Ae?e:new Ae(me(e));return new Ae(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||pa.logWithError(`${e} is not an integer.`),e<=0&&pa.logWithError(`${e} is not positive.`),nr.set({precision:e+1,rounding:Sp[n]});let o=new nr(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)||pa.logWithError(`${e} is not an integer.`),e<0&&pa.logWithError(`${e} is negative.`),su.DP=e,su.RM=Kp[n]||1,new su(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Cp=Se("Raydium_amount"),fa=er(Zl.default);function uu(s,e){let t="0",n="0";if(s.includes(".")){let o=s.split(".");o.length===2?([t,n]=o,n=n.padEnd(e,"0")):Cp.logWithError(`invalid number string, num: ${s}`)}else t=s;return[t,n.slice(0,e)||n]}var Ce=class extends Ae{constructor(t,n,o=!0,i){let r=new to.default(0),a=go.pow(new to.default(t.decimals));if(o)r=me(n);else{let c=new to.default(0),u=new to.default(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,d]=uu(n.toString(),t.decimals);c=me(l),u=me(d)}c=c.mul(a),r=c.add(u)}super(r,a);this.logger=Se(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 fa.DP=this.token.decimals,new fa(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}},bo=class extends Ae{constructor(t,n,o=!0,i){let r=new to.default(0),a=go.pow(new to.default(t.decimals));if(o)r=me(n);else{let c=new to.default(0),u=new to.default(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,d]=uu(n.toString(),t.decimals);c=me(l),u=me(d)}c=c.mul(a),r=c.add(u)}super(r,a);this.logger=Se(i||"TokenAmount"),this.currency=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.currency.equals(t.currency)||this.logger.logWithError("gt currency not equals"),this.raw.gt(t.raw)}lt(t){return this.currency.equals(t.currency)||this.logger.logWithError("lt currency not equals"),this.raw.lt(t.raw)}add(t){return this.currency.equals(t.currency)||this.logger.logWithError("add currency not equals"),new bo(this.currency,this.raw.add(t.raw))}sub(t){return this.currency.equals(t.currency)||this.logger.logWithError("sub currency not equals"),new bo(this.currency,this.raw.sub(t.raw))}toSignificant(t=this.currency.decimals,n,o=0){return super.toSignificant(t,n,o)}toFixed(t=this.currency.decimals,n,o=0){return t>this.currency.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,o)}toExact(t={groupSeparator:""}){return fa.DP=this.currency.decimals,new fa(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};var jl=require("@solana/web3.js"),cu=require("@solana/spl-token"),Mn={chainId:101,address:jl.PublicKey.default.toBase58(),programId:cu.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"}},Lt={chainId:101,address:"So11111111111111111111111111111111111111112",programId:cu.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 Pa=require("@solana/web3.js");var ze=require("@solana/web3.js"),$l=require("@solana/spl-token");function T({pubkey:s,isSigner:e=!1,isWritable:t=!0}){return{pubkey:s,isWritable:t,isSigner:e}}var ya=[T({pubkey:$l.TOKEN_PROGRAM_ID,isWritable:!1}),T({pubkey:ze.SystemProgram.programId,isWritable:!1}),T({pubkey:ze.SYSVAR_RENT_PUBKEY,isWritable:!1})];function ba({publicKey:s,transformSol:e}){let t=ga(s.toString());if(t instanceof ze.PublicKey)return e&&t.equals(Ot)?ee:t;if(e&&t.toString()===Ot.toBase58())return ee;if(typeof t=="string"){if(t===ze.PublicKey.default.toBase58())return ze.PublicKey.default;try{return new ze.PublicKey(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function ga(s){try{return new ze.PublicKey(s)}catch{return s}}var cn=new ze.PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Tt=new ze.PublicKey("SysvarRent111111111111111111111111111111111"),Rp=new ze.PublicKey("SysvarC1ock11111111111111111111111111111111"),An=new ze.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),or=new ze.PublicKey("Sysvar1nstructions1111111111111111111111111"),lu=ze.SystemProgram.programId,Lp=new ze.PublicKey("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Op=new ze.PublicKey("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Np=new ze.PublicKey("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Mp=new ze.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Fp=new ze.PublicKey("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),vp=new ze.PublicKey("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),_p=new ze.PublicKey("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Vp=new ze.PublicKey("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ep=new ze.PublicKey("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Dp=new ze.PublicKey("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Wp=new ze.PublicKey("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ee=new ze.PublicKey("So11111111111111111111111111111111111111112"),Ot=ze.PublicKey.default;function Vt(s){return ba({publicKey:s,transformSol:!0})}var mu=class{constructor({mint:e,decimals:t,symbol:n,name:o,skipMint:i=!1,isToken2022:r=!1}){if(e===Ot.toBase58()||e instanceof Pa.PublicKey&&Ot.equals(e)){this.decimals=Lt.decimals,this.symbol=Lt.symbol,this.name=Lt.name,this.mint=new Pa.PublicKey(Lt.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?Pa.PublicKey.default:ba({publicKey:e}),this.isToken2022=r}equals(e){return this===e?!0:this.mint.equals(e.mint)}},We=mu;We.WSOL=new mu(E(N({},Lt),{mint:Lt.address}));var du=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},ci=du;ci.SOL=new du(Mn);function qp(s,e){return s instanceof We&&e instanceof We?s.equals(e):s instanceof We||e instanceof We?!1:s===e}var Jl=re(require("bn.js"));var pu=new Ae(new Jl.default(100)),at=class extends Ae{toSignificant(e=5,t,n){return this.mul(pu).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(pu).toFixed(e,t,n)}};var Up=Se("Raydium_price"),ht=class extends Ae{constructor(t){let{baseToken:n,quoteToken:o,numerator:i,denominator:r}=t;super(i,r);this.baseToken=n,this.quoteToken=o,this.scalar=new Ae(Aa(n.decimals),Aa(o.decimals))}get raw(){return new Ae(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new ht({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Up.logWithError("mul token not equals");let n=super.mul(t);return new ht({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 ap=require("lodash");var wa="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",em="please provide connection in load() initialization or set it by raydium.setConnection(connection)";var wn=class{constructor(e){this._owner=e}get publicKey(){return wn.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return wn.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return wn.isKeyPair(this._owner)}get isPublicKey(){return wn.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!wn.isKeyPair(e)}};var Do=require("@solana/web3.js");var dt=require("@solana/spl-token");var qe=require("@solana/web3.js"),im=re(require("axios"));var Fn=require("@solana/web3.js");async function ka({connection:s,address:e,cluster:t="mainnet"}){let n=await Rt(s,[...new Set(e.map(i=>i.toString()))].map(i=>new Fn.PublicKey(i))),o={};for(let i=0;i<e.length;i++){let r=n[i],a=e[i];if(!r)continue;let c=new Fn.AddressLookupTableAccount({key:a,state:Fn.AddressLookupTableAccount.deserialize(r.data)});o[a.toString()]=c,t==="devnet"?_o[a.toString()]=c:vo[a.toString()]=c}return o}var vo={},Ta=async s=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(vo[e])return vo;let t=new Fn.PublicKey(e),n=await s.getAccountInfo(t);return n&&(vo[e]=new Fn.AddressLookupTableAccount({key:t,state:Fn.AddressLookupTableAccount.deserialize(n.data)})),vo},_o={},ha=async s=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(_o[e])return _o;let t=new Fn.PublicKey(e),n=await s.getAccountInfo(t);return n&&(_o[e]=new Fn.AddressLookupTableAccount({key:t,state:Fn.AddressLookupTableAccount.deserialize(n.data)})),_o};var Un=(t=>(t[t.V0=0]="V0",t[t.LEGACY=1]="LEGACY",t))(Un||{}),Y={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 It=require("@solana/web3.js");var tm=require("@solana/spl-token"),no=Se("Raydium_txUtil"),fu=1644;function ir(s){let e=[],t=[];return s.microLamports&&(e.push(It.ComputeBudgetProgram.setComputeUnitPrice({microLamports:s.microLamports})),t.push(Y.SetComputeUnitPrice)),s.units&&(e.push(It.ComputeBudgetProgram.setComputeUnitLimit({units:s.units})),t.push(Y.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Vo(s,e){var n,o;let t=e!=null?e:"confirmed";return(o=await((n=s.getLatestBlockhash)==null?void 0:n.call(s,{commitment:t})))==null?void 0:o.blockhash}async function rr(s,e){return s.getSignatureStatuses([e]),new Promise((t,n)=>{let o=setTimeout(n,6e4);s.onSignature(e,i=>{if(clearTimeout(o),!i.err){t("");return}n(Object.assign(i.err,{txId:e}))},"confirmed")})}function ar(s,e){s.length<1&&no.logWithError(`no instructions provided: ${s.toString()}`),e.length<1&&no.logWithError(`no signers provided:, ${e.toString()}`);let t=new It.Transaction;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...s);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<fu}catch{return!1}}async function Gp(s,e,t,n=!0){let o=new It.PublicKey("RaydiumSimuLateTransaction11111111111111111"),i=[],r=new It.Transaction;r.feePayer=o;for(let u of e)ar([...r.instructions,u],[o])||(i.push(r),r=new It.Transaction,r.feePayer=o),r.add(u);r.instructions.length>0&&i.push(r);let a=[];try{if(a=await nm(s,i,n),a.find(u=>u.err!==null))throw Error("rpc simulateTransaction error")}catch(u){u instanceof Error&&no.logWithError("failed to simulate for instructions","RPC_ERROR",{message:u.message})}let c=[];for(let u of a)if(no.debug("simulate result:",u),u.logs){let l=u.logs.filter(d=>d&&d.includes(t));no.debug("filteredLog:",c),l.length||no.logWithError("simulate log not match keyword","keyword",t),c.push(...l)}return c}function zp(s,e){let t=s.match(/{["\w:,]+}/g);return!t||t.length!==1?no.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Xp(s,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(s);return!n||n.length!==2?no.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function ae(s,e){let[t,n]=It.PublicKey.findProgramAddressSync(s,e);return{publicKey:t,nonce:n}}async function nm(s,e,t){let n=[];if(t){let o=await s.getLatestBlockhash(),i=[];for(let u of e){u.recentBlockhash=o.blockhash,u.lastValidBlockHeight=o.lastValidBlockHeight;let d=u._compile().serialize(),m=u._serialize(d).toString("base64");i.push(m)}let r=i.map(u=>{let l=s._buildArgs([u],void 0,"base64");return{methodName:"simulateTransaction",args:l}}),a=[],c=20;for(let u=0;u<Math.ceil(r.length/c);u++)a.push(r.slice(u*c,(u+1)*c));n=await(await Promise.all(a.map(async u=>(await s._rpcBatchRequest(u)).map(l=>l.result.value)))).flat()}else try{n=await Promise.all(e.map(async o=>await(await s.simulateTransaction(o)).value))}catch(o){o instanceof Error&&no.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:o.message})}return n}function li({instructions:s,payer:e,signers:t}){return ar(s,[e,...t])}function mi({instructions:s,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=It.Keypair.generate().publicKey.toString()}){let i=new It.TransactionMessage({payerKey:e,recentBlockhash:n,instructions:s}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new It.VersionedTransaction(i).serialize()).toString("base64").length<fu}catch{return!1}}var Ia={time:0,data:void 0};async function Yp(s){if(!Ia.data||(Date.now()-Ia.time)/1e3>30){let e=await s.getEpochInfo();return Ia={time:Date.now(),data:e},e}else return Ia.data}var yu=s=>Buffer.isBuffer(s)?s:s instanceof Uint8Array?Buffer.from(s.buffer,s.byteOffset,s.byteLength):Buffer.from(s),om=s=>{let e=s.serialize({requireAllSignatures:!1,verifySignatures:!1});s instanceof It.VersionedTransaction&&(e=yu(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Po(s){let e=[];return s.forEach(t=>{t instanceof It.Transaction&&(t.recentBlockhash||(t.recentBlockhash=tm.TOKEN_PROGRAM_ID.toBase58()),t.feePayer||(t.feePayer=It.Keypair.generate().publicKey)),e.push(om(t))}),console.log("simulate tx string:",e),e}function Hp(s){let e=s.serialize({requireAllSignatures:!1,verifySignatures:!1});return s instanceof It.VersionedTransaction&&(e=yu(e)),e.toString("base64")}var Ba=2e3,sr=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 im.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}=ir(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(qe.SystemProgram.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new qe.PublicKey(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(Y.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!==qe.PublicKey.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:n}){return e===0?await this.buildV0(E(N({},t||{}),{lookupTableAddress:n})):this.build(t)}build(e){var n;let t=new qe.Transaction;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(o=>o.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async o=>{var l;let{recentBlockHash:i,skipPreflight:r=!0,sendAndConfirm:a,notSendToRpc:c}=o||{},u=i!=null?i:await Vo(this.connection,this.blockhashCommitment);if(t.recentBlockhash=u,this.signers.length&&t.sign(...this.signers),Po([t]),(l=this.owner)!=null&&l.isKeyPair)return{txId:a?await(0,qe.sendAndConfirmTransaction)(this.connection,t,this.signers.find(p=>p.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 d=await this.signAllTransactions([t]);if(this.signers.length)for(let p of d)try{p.sign(...this.signers)}catch{}return{txId:c?"":await this.connection.sendRawTransaction(d[0].serialize(),{skipPreflight:r}),signedTx:d[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var u;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:o}=this.build(n),i=t.filter(l=>l.transaction.instructions.length>0),r=[o,...i.map(l=>l.transaction)],a=[this.signers,...i.map(l=>l.signers)],c=[...this.instructionTypes,...i.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:r,signers:a,instructionTypes:c,execute:async l=>{var g;let{sequentially:d,onTxUpdate:p,skipTxCount:m=0,recentBlockHash:f,skipPreflight:y=!0}=l||{},b=f!=null?f:await Vo(this.connection,this.blockhashCommitment);if((g=this.owner)!=null&&g.isKeyPair){if(d){let P=[],k=0;for(let I of r){if(++k,k<=m)continue;let A=await(0,qe.sendAndConfirmTransaction)(this.connection,I,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});P.push(A)}return{txIds:P,signedTxs:r}}return{txIds:await await Promise.all(r.map(async P=>(P.recentBlockhash=b,await this.connection.sendRawTransaction(P.serialize(),{skipPreflight:y})))),signedTxs:r}}if(this.signAllTransactions){let P=r.map((I,A)=>(I.recentBlockhash=b,a[A].length&&I.sign(...a[A]),I));Po(P);let k=await this.signAllTransactions(P);if(d){let I=0,A=[],h=async()=>{if(!k[I])return;let B=await this.connection.sendRawTransaction(k[I].serialize(),{skipPreflight:y});A.push({txId:B,status:"sent",signedTx:k[I]}),p==null||p([...A]),I++;let S=!1,K=null,x=null,C=L=>{K!==null&&clearInterval(K),x!==null&&this.connection.removeSignatureListener(x);let O=A.findIndex(R=>R.txId===B);if(O>-1){if(A[O].status==="error"||A[O].status==="success")return;A[O].status=L.err?"error":"success"}p==null||p([...A]),L.err||h()};this.loopMultiTxStatus&&(K=setInterval(async()=>{var L;if(S){clearInterval(K);return}try{let O=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:0});O&&(S=!0,clearInterval(K),C({err:((L=O.meta)==null?void 0:L.err)||null}),console.log("tx status from getTransaction:",B))}catch(O){S=!0,clearInterval(K),console.error("getTransaction timeout:",O,B)}},Ba)),x=this.connection.onSignature(B,L=>{if(S){this.connection.removeSignatureListener(x);return}S=!0,C(L)},"confirmed"),this.connection.getSignatureStatus(B)};return await h(),{txIds:A.map(B=>B.txId),signedTxs:k}}else{let I=[];for(let A=0;A<k.length;A+=1){let h=await this.connection.sendRawTransaction(k[A].serialize(),{skipPreflight:y});I.push(h)}return{txIds:I,signedTxs:k}}}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=tt(f,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),a=N(N({},this.cluster==="devnet"?await ha(this.connection):await Ta(this.connection)),t),c=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let b of c)a[b]===void 0&&u.push(new qe.PublicKey(b));let l=await ka({connection:this.connection,address:u});for(let[b,g]of Object.entries(l))a[b]=g;let d=o?qe.PublicKey.default.toBase58():i!=null?i:await Vo(this.connection,this.blockhashCommitment),p=new qe.TransactionMessage({payerKey:this.feePayer,recentBlockhash:d,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 m=new qe.VersionedTransaction(p);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async b=>{var I;let{skipPreflight:g=!0,sendAndConfirm:P,notSendToRpc:k}=b||{};if(Po([m]),(I=this.owner)!=null&&I.isKeyPair){let A=await this.connection.sendTransaction(m,{skipPreflight:g});return P&&await rr(this.connection,A),{txId:A,signedTx:m}}if(this.signAllTransactions){let A=await this.signAllTransactions([m]);if(this.signers.length)for(let h of A)try{h.sign(this.signers)}catch{}return{txId:k?"":await this.connection.sendTransaction(A[0],{skipPreflight:g}),signedTx:A[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async buildV0MultiTx(e){var u;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:o}=await this.buildV0(n),i=t.filter(l=>l.builder.instructions.length>0),r=[o,...i.map(l=>l.transaction)],a=[this.signers,...i.map(l=>l.signers)],c=[...this.instructionTypes,...i.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),r.forEach(async(l,d)=>{l.sign(a[d])}),{builder:this,transactions:r,signers:a,instructionTypes:c,buildProps:n,execute:async l=>{var y;let{sequentially:d,onTxUpdate:p,recentBlockHash:m,skipPreflight:f=!0}=l||{};if(m&&r.forEach(b=>b.message.recentBlockhash=m),Po(r),(y=this.owner)!=null&&y.isKeyPair){if(d){let b=[];for(let g of r){let P=await this.connection.sendTransaction(g,{skipPreflight:f});await rr(this.connection,P),b.push(P)}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(d){let g=0,P=[],k=async()=>{if(!b[g])return;let I=await this.connection.sendTransaction(b[g],{skipPreflight:f});P.push({txId:I,status:"sent",signedTx:b[g]}),p==null||p([...P]),g++;let A=!1,h=null,B=null,S=K=>{h!==null&&clearInterval(h),B!==null&&this.connection.removeSignatureListener(B);let x=P.findIndex(C=>C.txId===I);if(x>-1){if(P[x].status==="error"||P[x].status==="success")return;P[x].status=K.err?"error":"success"}p==null||p([...P]),K.err||k()};this.loopMultiTxStatus&&(h=setInterval(async()=>{var K;if(A){clearInterval(h);return}try{let x=await this.connection.getTransaction(I,{commitment:"confirmed",maxSupportedTransactionVersion:0});x&&(A=!0,clearInterval(h),S({err:((K=x.meta)==null?void 0:K.err)||null}),console.log("tx status from getTransaction:",I))}catch(x){A=!0,clearInterval(h),console.error("getTransaction timeout:",x,I)}},Ba)),B=this.connection.onSignature(I,K=>{if(A){this.connection.removeSignatureListener(B);return}A=!0,S(K)},"confirmed"),this.connection.getSignatureStatus(I)};return k(),{txIds:[],signedTxs:b}}else{let g=[];for(let P=0;P<b.length;P+=1){let k=await this.connection.sendTransaction(b[P],{skipPreflight:f});g.push(k)}return{txIds:g,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var p;let d=e||{},{splitIns:t=[],computeBudgetConfig:n}=d,o=tt(d,["splitIns","computeBudgetConfig"]),i=n?ir(n):{instructions:[],instructionTypes:[]},r=this.signers.reduce((m,f)=>E(N({},m),{[f.publicKey.toBase58()]:f}),{}),a=[],c=[],u=[],l=0;if(this.allInstructions.forEach(m=>{let f=[...u,m],y=n?[...i.instructions,...f]:f,g=[...new Set(f.map(P=>P.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat()).values()].map(P=>new qe.PublicKey(P));if(m!==t[l]&&u.length<12&&(li({instructions:y,payer:this.feePayer,signers:g})||li({instructions:f,payer:this.feePayer,signers:g})))u.push(m);else{if(u.length===0)throw Error("item ins too big");l+=m===t[l]?1:0,li({instructions:n?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:g})?a.push(new qe.Transaction().add(...i.instructions,...u)):a.push(new qe.Transaction().add(...u)),c.push(Array.from(new Set(u.map(P=>P.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat())).map(P=>r[P]).filter(P=>P!==void 0)),u=[m]}}),u.length>0){let f=[...new Set(u.map(y=>y.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(y=>r[y]).filter(y=>y!==void 0);li({instructions:n?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:f.map(y=>y.publicKey)})?a.push(new qe.Transaction().add(...i.instructions,...u)):a.push(new qe.Transaction().add(...u)),c.push(f)}return a.forEach(m=>m.feePayer=this.feePayer),(p=this.owner)!=null&&p.signer&&c.forEach(m=>{m.some(f=>f.publicKey.equals(this.owner.publicKey))||m.push(this.owner.signer)}),{builder:this,transactions:a,signers:c,instructionTypes:this.instructionTypes,execute:async m=>{var I;let{sequentially:f,onTxUpdate:y,skipTxCount:b=0,recentBlockHash:g,skipPreflight:P=!0}=m||{},k=g!=null?g:await Vo(this.connection,this.blockhashCommitment);if(a.forEach(async(A,h)=>{A.recentBlockhash=k,c[h].length&&A.sign(...c[h])}),Po(a),(I=this.owner)!=null&&I.isKeyPair){if(f){let A=0,h=[];for(let B of a){if(++A,A<=b){h.push("tx skipped");continue}let S=await(0,qe.sendAndConfirmTransaction)(this.connection,B,this.signers.find(K=>K.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:P});h.push(S)}return{txIds:h,signedTxs:a}}return{txIds:await Promise.all(a.map(async A=>await this.connection.sendRawTransaction(A.serialize(),{skipPreflight:P}))),signedTxs:a}}if(this.signAllTransactions){let A=await this.signAllTransactions(a.slice(b,a.length)),h=[...a.slice(0,b),...A];if(f){let B=0,S=[],K=async()=>{if(!h[B])return;B<b&&(S.push({txId:"",status:"success",signedTx:h[B]}),y==null||y([...S]),B++,K());let x=await this.connection.sendRawTransaction(h[B].serialize(),{skipPreflight:P});S.push({txId:x,status:"sent",signedTx:h[B]}),y==null||y([...S]),B++;let C=!1,L=null,O=null,R=F=>{L!==null&&clearInterval(L),O!==null&&this.connection.removeSignatureListener(O);let W=S.findIndex(D=>D.txId===x);if(W>-1){if(S[W].status==="error"||S[W].status==="success")return;S[W].status=F.err?"error":"success"}y==null||y([...S]),F.err||K()};this.loopMultiTxStatus&&(L=setInterval(async()=>{var F;if(C){clearInterval(L);return}try{let W=await this.connection.getTransaction(x,{commitment:"confirmed",maxSupportedTransactionVersion:0});W&&(C=!0,clearInterval(L),R({err:((F=W.meta)==null?void 0:F.err)||null}),console.log("tx status from getTransaction:",x))}catch(W){C=!0,clearInterval(L),console.error("getTransaction timeout:",W,x)}},Ba)),O=this.connection.onSignature(x,F=>{if(C){this.connection.removeSignatureListener(O);return}C=!0,R(F)},"confirmed"),this.connection.getSignatureStatus(x)};return await K(),{txIds:S.map(x=>x.txId),signedTxs:h}}else{let B=[];for(let S=0;S<h.length;S+=1){let K=await this.connection.sendRawTransaction(h[S].serialize(),{skipPreflight:P});B.push(K)}return{txIds:B,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuildV0(e){var I;let k=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:o={},lookupTableAddress:i=[],insCountLimit:r=12}=k,a=tt(k,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),c=N(N({},this.cluster==="devnet"?await ha(this.connection):await Ta(this.connection)),o),u=Array.from(new Set([...this.lookupTableAddress,...i])),l=[];for(let A of u)c[A]===void 0&&l.push(new qe.PublicKey(A));let d=await ka({connection:this.connection,address:l});for(let[A,h]of Object.entries(d))c[A]=h;let p=t?ir(t):{instructions:[],instructionTypes:[]},m=await Vo(this.connection,this.blockhashCommitment),f=this.signers.reduce((A,h)=>E(N({},A),{[h.publicKey.toBase58()]:h}),{}),y=[],b=[],g=[],P=0;if(this.allInstructions.forEach(A=>{let h=[...g,A],B=t?[...p.instructions,...h]:h;if(A!==n[P]&&g.length<r&&(mi({instructions:B,payer:this.feePayer,lookupTableAddressAccount:c})||mi({instructions:h,payer:this.feePayer,lookupTableAddressAccount:c})))g.push(A);else{if(g.length===0)throw Error("item ins too big");P+=A===n[P]?1:0;let S={};for(let K of[...new Set(u)])c[K]!==void 0&&(S[K]=c[K]);if(t&&mi({instructions:[...p.instructions,...g],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:m})){let K=new qe.TransactionMessage({payerKey:this.feePayer,recentBlockhash:m,instructions:[...p.instructions,...g]}).compileToV0Message(Object.values(c));y.push(new qe.VersionedTransaction(K))}else{let K=new qe.TransactionMessage({payerKey:this.feePayer,recentBlockhash:m,instructions:[...g]}).compileToV0Message(Object.values(c));y.push(new qe.VersionedTransaction(K))}b.push(Array.from(new Set(g.map(K=>K.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat())).map(K=>f[K]).filter(K=>K!==void 0)),g=[A]}}),g.length>0){let h=[...new Set(g.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&&mi({instructions:[...p.instructions,...g],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:m})){let B=new qe.TransactionMessage({payerKey:this.feePayer,recentBlockhash:m,instructions:[...p.instructions,...g]}).compileToV0Message(Object.values(c));y.push(new qe.VersionedTransaction(B))}else{let B=new qe.TransactionMessage({payerKey:this.feePayer,recentBlockhash:m,instructions:[...g]}).compileToV0Message(Object.values(c));y.push(new qe.VersionedTransaction(B))}b.push(h)}return(I=this.owner)!=null&&I.signer&&b.forEach(A=>{A.some(h=>h.publicKey.equals(this.owner.publicKey))||A.push(this.owner.signer)}),y.forEach((A,h)=>{A.sign(b[h])}),{builder:this,transactions:y,buildProps:e,signers:b,instructionTypes:this.instructionTypes,execute:async A=>{var C;let{sequentially:h,onTxUpdate:B,skipTxCount:S=0,recentBlockHash:K,skipPreflight:x=!0}=A||{};if(y.map(async(L,O)=>{b[O].length&&L.sign(b[O]),K&&(L.message.recentBlockhash=K)}),Po(y),(C=this.owner)!=null&&C.isKeyPair){if(h){let L=0,O=[];for(let R of y){if(++L,L<=S){console.log("skip tx: ",L),O.push("tx skipped");continue}let F=await this.connection.sendTransaction(R,{skipPreflight:x});await rr(this.connection,F),O.push(F)}return{txIds:O,signedTxs:y}}return{txIds:await Promise.all(y.map(async L=>await this.connection.sendTransaction(L,{skipPreflight:x}))),signedTxs:y}}if(this.signAllTransactions){let L=await this.signAllTransactions(y.slice(S,y.length)),O=[...y.slice(0,S),...L];if(h){let R=0,F=[],W=async()=>{if(!O[R])return;if(R<S){F.push({txId:"",status:"success",signedTx:O[R]}),B==null||B([...F]),R++,W();return}let D=await this.connection.sendTransaction(O[R],{skipPreflight:x});F.push({txId:D,status:"sent",signedTx:O[R]}),B==null||B([...F]),R++;let X=!1,$=null,H=null,oe=ue=>{$!==null&&clearInterval($),H!==null&&this.connection.removeSignatureListener(H);let te=F.findIndex(ge=>ge.txId===D);if(te>-1){if(F[te].status==="error"||F[te].status==="success")return;F[te].status=ue.err?"error":"success"}B==null||B([...F]),ue.err||W()};this.loopMultiTxStatus&&($=setInterval(async()=>{var ue;if(X){clearInterval($);return}try{let te=await this.connection.getTransaction(D,{commitment:"confirmed",maxSupportedTransactionVersion:0});te&&(X=!0,clearInterval($),oe({err:((ue=te.meta)==null?void 0:ue.err)||null}),console.log("tx status from getTransaction:",D))}catch(te){X=!0,clearInterval($),console.error("getTransaction timeout:",te,D)}},Ba)),H=this.connection.onSignature(D,ue=>{if(X){this.connection.removeSignatureListener(H);return}X=!0,oe(ue)},"confirmed"),this.connection.getSignatureStatus(D)};return W(),{txIds:[],signedTxs:O}}else{let R=[];for(let F=0;F<O.length;F+=1){let W=await this.connection.sendTransaction(O[F],{skipPreflight:x});R.push(W)}return{txIds:R,signedTxs:O}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}};var bu=(...s)=>s.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),st=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=Se(t)}createTxBuilder(e){return this.scope.checkOwner(),new sr({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(bu(e))}logInfo(...e){this.logger.info(bu(e))}logAndCreateError(...e){let t=bu(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};var va=require("@solana/web3.js"),wm=re(require("bn.js"));var yn=require("@solana/spl-token");var lr=require("@solana/web3.js"),Pm=re(require("bn.js"));var Am=require("@solana/spl-token");function Qp(s){return s instanceof Uint8Array||s!=null&&typeof s=="object"&&s.constructor.name==="Uint8Array"}function gu(s,...e){if(!Qp(s))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(s.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${s.length}`)}function Pu(s,e=!0){if(s.destroyed)throw new Error("Hash instance has been destroyed");if(e&&s.finished)throw new Error("Hash#digest() has already been called")}function rm(s,e){gu(s);let t=e.outputLen;if(s.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Sa=s=>new DataView(s.buffer,s.byteOffset,s.byteLength),vn=(s,e)=>s<<32-e|s>>>e;var yP=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Zp(s){if(typeof s!="string")throw new Error(`utf8ToBytes expected string, got ${typeof s}`);return new Uint8Array(new TextEncoder().encode(s))}function Au(s){return typeof s=="string"&&(s=Zp(s)),gu(s),s}var xa=class{clone(){return this._cloneInto()}},bP={}.toString;function am(s){let e=n=>s().update(Au(n)).digest(),t=s();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>s(),e}function jp(s,e,t,n){if(typeof s.setBigUint64=="function")return s.setBigUint64(e,t,n);let o=BigInt(32),i=BigInt(4294967295),r=Number(t>>o&i),a=Number(t&i),c=n?4:0,u=n?0:4;s.setUint32(e+c,r,n),s.setUint32(e+u,a,n)}var sm=(s,e,t)=>s&e^~s&t,um=(s,e,t)=>s&e^s&t^e&t,Ka=class extends xa{constructor(e,t,n,o){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Sa(this.buffer)}update(e){Pu(this);let{view:t,buffer:n,blockLen:o}=this;e=Au(e);let i=e.length;for(let r=0;r<i;){let a=Math.min(o-this.pos,i-r);if(a===o){let c=Sa(e);for(;o<=i-r;r+=o)this.process(c,r);continue}n.set(e.subarray(r,r+a),this.pos),this.pos+=a,r+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Pu(this),rm(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:i}=this,{pos:r}=this;t[r++]=128,this.buffer.subarray(r).fill(0),this.padOffset>o-r&&(this.process(n,0),r=0);for(let d=r;d<o;d++)t[d]=0;jp(n,o-8,BigInt(this.length*8),i),this.process(n,0);let a=Sa(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,l=this.get();if(u>l.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;d<u;d++)a.setUint32(4*d,l[d],i)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:o,finished:i,destroyed:r,pos:a}=this;return e.length=o,e.pos=a,e.finished=i,e.destroyed=r,o%t&&e.buffer.set(n),e}};var $p=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ao=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),wo=new Uint32Array(64),wu=class extends Ka{constructor(){super(64,32,8,!1),this.A=Ao[0]|0,this.B=Ao[1]|0,this.C=Ao[2]|0,this.D=Ao[3]|0,this.E=Ao[4]|0,this.F=Ao[5]|0,this.G=Ao[6]|0,this.H=Ao[7]|0}get(){let{A:e,B:t,C:n,D:o,E:i,F:r,G:a,H:c}=this;return[e,t,n,o,i,r,a,c]}set(e,t,n,o,i,r,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=i|0,this.F=r|0,this.G=a|0,this.H=c|0}process(e,t){for(let d=0;d<16;d++,t+=4)wo[d]=e.getUint32(t,!1);for(let d=16;d<64;d++){let p=wo[d-15],m=wo[d-2],f=vn(p,7)^vn(p,18)^p>>>3,y=vn(m,17)^vn(m,19)^m>>>10;wo[d]=y+wo[d-7]+f+wo[d-16]|0}let{A:n,B:o,C:i,D:r,E:a,F:c,G:u,H:l}=this;for(let d=0;d<64;d++){let p=vn(a,6)^vn(a,11)^vn(a,25),m=l+p+sm(a,c,u)+$p[d]+wo[d]|0,y=(vn(n,2)^vn(n,13)^vn(n,22))+um(n,o,i)|0;l=u,u=c,c=a,a=r+m|0,r=i,i=o,o=n,n=m+y|0}n=n+this.A|0,o=o+this.B|0,i=i+this.C|0,r=r+this.D|0,a=a+this.E|0,c=c+this.F|0,u=u+this.G|0,l=l+this.H|0,this.set(n,o,i,r,a,c,u,l)}roundClean(){wo.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var cm=am(()=>new wu);var fm=require("@solana/web3.js"),pi=re(require("bn.js"));var Q=require("@solana/buffer-layout"),di=Q.Layout,lm=Q.Structure,mm=Q.Union,Jp=Q.BitStructure,Ca=Q.UInt,ku=Q.Blob,ef=Q.greedy,Ra=Q.u8,ut=Q.u16,tf=Q.u24,ur=Q.u32,nf=Q.u40,of=Q.u48,rf=Q.nu64,af=Q.u16be,sf=Q.u24be,uf=Q.u32be,cf=Q.u40be,lf=Q.u48be,mf=Q.nu64be,df=Q.s8,pf=Q.s16,ff=Q.s24,bt=Q.s32,yf=Q.s40,bf=Q.s48,gf=Q.ns64,Pf=Q.s16be,Af=Q.s24be,wf=Q.s32be,kf=Q.s40be,Tf=Q.s48be,hf=Q.ns64be,If=Q.f32,Bf=Q.f32be,xf=Q.f64,Sf=Q.f64be;var dm=Q.seq,pm=Q.union,Kf=Q.unionLayoutDiscriminator,xe=Q.blob,Cf=Q.cstr,Rf=Q.utf8,La=Q.bits,Oa=Q.offset;var ko=class extends di{constructor(t,n,o){super(t,o);this.blob=xe(t),this.signed=n}decode(t,n=0){let o=new pi.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 pi.default(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,o)}},cr=class extends di{constructor(t){super(8,t);this._lower=La(ur(),!1),this._upper=La(ur(),!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 N(N({},o),i)}encode(t,n,o=0){return this._lower.encode(t,n,o)+this._upper.encode(t,n,o+this._lower.span)}};function V(s){return new Ca(1,s)}function Qe(s){return new Ca(4,s)}function w(s){return new ko(8,!1,s)}function pe(s){return new ko(16,!1,s)}function hu(s){return new ko(1,!0,s)}function Eo(s){return new ko(8,!0,s)}function Iu(s){return new ko(16,!0,s)}var Gn=class extends di{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 M(s){return new Gn(xe(32),e=>new fm.PublicKey(e),e=>e.toBuffer(),s)}var Na=class extends di{constructor(t,n){super(-1,n);this.layout=t,this.discriminator=Ra()}encode(t,n,o=0){return t==null?this.discriminator.encode(0,n,o):(this.discriminator.encode(1,n,o),this.layout.encode(t,n,o+1)+1)}decode(t,n=0){let o=this.discriminator.decode(t,n);if(o===0)return null;if(o===1)return this.layout.decode(t,n+1);throw new Error("Invalid option "+this.property)}getSpan(t,n=0){let o=this.discriminator.decode(t,n);if(o===0)return 1;if(o===1)return this.layout.getSpan(t,n+1)+1;throw new Error("Invalid option "+this.property)}};function Lf(s,e){return new Na(s,e)}function Je(s){return new Gn(Ra(),ym,bm,s)}function ym(s){if(s===0)return!1;if(s===1)return!0;throw new Error("Invalid bool: "+s)}function bm(s){return s?1:0}function Bu(s,e){let t=ur("length"),n=v([t,J(s,Oa(t,-t.span),"values")]);return new Gn(n,({values:o})=>o,o=>({values:o}),e)}function Of(s,e,t){let n=v([w("tag"),e.replicate("data")]);function o({tag:i,data:r}){if(!i.eq(s))throw new Error("Invalid tag, expected: "+s.toString("hex")+", got: "+i.toString("hex"));return r}return new Gn(n,o,i=>({tag:s,data:i}),t)}function gm(s){let e=ur("length"),t=v([e,xe(Oa(e,-e.span),"data")]);return new Gn(t,({data:n})=>n,n=>({data:n}),s)}function Et(s){return new Gn(gm(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),s)}function Nf(s,e){let t=pm(Ra(),e);return s.forEach((n,o)=>t.addVariant(o,n,n.property)),t}function Mf(s,e,t){let n=v([J(s,e,"values")]);return new Gn(n,({values:o})=>o,o=>({values:o}),t)}var Ma=class extends lm{decode(e,t){return super.decode(e,t)}};function v(s,e,t){return new Ma(s,e,t)}var Fa=class extends mm{encodeInstruction(e){let t=Math.max(...Object.values(this.registry).map(o=>o.span)),n=Buffer.alloc(t);return n.slice(0,this.encode(e,n))}decodeInstruction(e){return this.decode(e)}};function Ff(s,e,t){return new Fa(s,e,t)}var Tu=class extends ku{decode(e,t){let n=super.decode(e,t);if(!n.every(o=>o===0))throw new Error("nonzero padding bytes");return n}};function vf(s){return new Tu(s)}function J(s,e,t){let n,o=typeof e=="number"?e:(0,pi.isBN)(e)?e.toNumber():new Proxy(e,{get(i,r){if(!n){let a=Reflect.get(i,"count");n=(0,pi.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 dm(s,o,t)}var kn=v([M("mint"),M("owner"),w("amount"),Qe("delegateOption"),M("delegate"),V("state"),Qe("isNativeOption"),w("isNative"),w("delegatedAmount"),Qe("closeAuthorityOption"),M("closeAuthority")]);function xu({owner:s,solAccountResp:e,tokenAccountResp:t}){let n=[],o=[];for(let{pubkey:i,account:r}of t.value){let a=kn.decode(r.data),{mint:c,amount:u}=a;n.push({publicKey:i,mint:c,amount:u,isAssociated:ne(s,c,r.owner).publicKey.equals(i),isNative:!1,programId:r.owner}),o.push({pubkey:i,accountInfo:a,programId:r.owner})}return e&&n.push({mint:lr.PublicKey.default,amount:new Pm.default(String(e.lamports)),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:o}}function ct({fromPublicKey:s,programId:e=Am.TOKEN_PROGRAM_ID,assignSeed:t}){let n=t?btoa(t).slice(0,32):lr.Keypair.generate().publicKey.toBase58().slice(0,32);return{publicKey:_f(s,n,e),seed:n}}function _f(s,e,t){let n=Buffer.concat([s.toBuffer(),Buffer.from(e),t.toBuffer()]),o=cm(n);return new lr.PublicKey(o)}function _a(s){let{mint:e,tokenAccount:t,owner:n,programId:o=yn.TOKEN_PROGRAM_ID}=s;return(0,yn.createInitializeAccountInstruction)(t,e,n,o)}function zn(s){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:o,programId:i=yn.TOKEN_PROGRAM_ID}=s;return(0,yn.createCloseAccountInstruction)(e,t,o,n,i)}async function oo(s){let{connection:e,amount:t,commitment:n,payer:o,owner:i,skipCloseAccount:r}=s,a=await e.getMinimumBalanceForRentExemption(kn.span,n),c=me(t).add(new wm.default(a)),u=ct({fromPublicKey:o,programId:yn.TOKEN_PROGRAM_ID});return{addresses:{newAccount:u.publicKey},signers:[],instructions:[va.SystemProgram.createAccountWithSeed({fromPubkey:o,basePubkey:o,seed:u.seed,newAccountPubkey:u.publicKey,lamports:c.toNumber(),space:kn.span,programId:yn.TOKEN_PROGRAM_ID}),_a({mint:new va.PublicKey(Lt.address),tokenAccount:u.publicKey,owner:i,programId:yn.TOKEN_PROGRAM_ID})],instructionTypes:[Y.CreateAccount,Y.InitAccount],endInstructionTypes:r?[]:[Y.CloseAccount],endInstructions:r?[]:[zn({tokenAccount:u.publicKey,payer:o,owner:i})]}}function Su({source:s,destination:e,owner:t,amount:n,multiSigners:o=[],tokenProgram:i=yn.TOKEN_PROGRAM_ID}){return(0,yn.createTransferInstruction)(s,e,t,BigInt(String(n)),o,i)}var mr=class extends st{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;this._notSubscribeAccountChange=!1;this._accountFetchTime=0;let{tokenAccounts:n,tokenAccountRawInfos:o,notSubscribeAccountChange:i}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=o||[],this._notSubscribeAccountChange=i!=null?i:!0,this._clientOwnedToken=!!(n||o)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}set notSubscribeAccountChange(t){this._notSubscribeAccountChange=t}updateTokenAccount({tokenAccounts:t,tokenAccountRawInfos:n}){return t&&(this._tokenAccounts=t),n&&(this._tokenAccountRawInfos=n),this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=void 0,this._clientOwnedToken=!0,this}addAccountChangeListener(t){return this._accountListener.push(t),this}removeAccountChangeListener(t){return this._accountListener=this._accountListener.filter(n=>n!==t),this}getAssociatedTokenAccount(t,n){return ne(this.scope.ownerPubKey,t,n).publicKey}resetTokenAccounts(){this._clientOwnedToken||(this._tokenAccounts=[],this._tokenAccountRawInfos=[])}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length&&Date.now()-this._accountFetchTime<(this._notSubscribeAccountChange?1e3*5:1e3*60*3))return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let o=N(N({},{}),t),[i,r,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,o.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:dt.TOKEN_PROGRAM_ID},o.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:dt.TOKEN_2022_PROGRAM_ID},o.commitment)]),{tokenAccounts:c,tokenAccountRawInfos:u}=xu({owner:this.scope.ownerPubKey,solAccountResp:i,tokenAccountResp:{context:r.context,value:[...r.value,...a.value]}});return this._tokenAccounts=c,this._tokenAccountRawInfos=u,this._accountFetchTime=Date.now(),this._notSubscribeAccountChange||(this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>{this.fetchWalletTokenAccounts({forceUpdate:!0}),this._accountListener.forEach(l=>l({tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos}))},{commitment:t==null?void 0:t.commitment})),{tokenAccounts:c,tokenAccountRawInfos:u}}clearAccountChangeCkb(){this._accountChangeListenerId!==void 0&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId)}async getCreatedTokenAccount({mint:t,programId:n=dt.TOKEN_PROGRAM_ID,associatedOnly:o=!0}){await this.fetchWalletTokenAccounts();let i=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,c)=>a.amount.lt(c.amount)?1:-1),r=this.getAssociatedTokenAccount(t,n);for(let a of i){let{publicKey:c}=a;if(c&&(!o||o&&r.equals(c)))return c}}async getOrCreateTokenAccount(t){var y,b,g,P;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:o,associatedOnly:i,owner:r,notUseTokenAccount:a=!1,skipCloseAccount:c=!1,checkCreateATAOwner:u=!1,assignSeed:l}=t,d=new Do.PublicKey(t.tokenProgram||dt.TOKEN_PROGRAM_ID),p=this.getAssociatedTokenAccount(n,new Do.PublicKey(d)),m=(a?[]:this.tokenAccountRawInfos).filter(k=>k.accountInfo.mint.equals(n)&&(!i||k.pubkey.equals(p))).sort((k,I)=>k.accountInfo.amount.lt(I.accountInfo.amount)?1:-1);if(o===void 0||m.length>0)return m.length>0?{account:m[0].pubkey}:{};let f={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(i){let k=(0,dt.createAssociatedTokenAccountIdempotentInstruction)(o.payer||r,p,r,n,d),I=this.tokenAccountRawInfos.find(A=>A.pubkey.equals(p));if(u){let A=await this.scope.connection.getAccountInfo(p);if(A===null)(y=f.instructions)==null||y.push(k),f.instructionTypes.push(Y.CreateATA);else if(!(A.owner.equals(d)&&dt.AccountLayout.decode(A.data).mint.equals(n)&&dt.AccountLayout.decode(A.data).owner.equals(r)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${p.toString()}`)}else I===void 0&&(f.instructions.push(k),f.instructionTypes.push(Y.CreateATA));if(n.equals(ee)&&o.amount){let A=await oo({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:o.payer||this.scope.ownerPubKey,amount:(b=o.amount)!=null?b:0,skipCloseAccount:c});f.instructions.push(...A.instructions||[]),f.endInstructions.push(...A.endInstructions||[]),f.instructionTypes.push(...A.instructionTypes||[]),f.endInstructionTypes.push(...A.endInstructionTypes||[]),o.amount&&(f.instructions.push(Su({source:A.addresses.newAccount,destination:p,owner:this.scope.ownerPubKey,amount:o.amount,tokenProgram:dt.TOKEN_PROGRAM_ID})),f.instructionTypes.push(Y.TransferAmount))}return!c&&I===void 0&&(f.endInstructions.push(zn({owner:r,payer:o.payer||r,tokenAccount:p,programId:d})),f.endInstructionTypes.push(Y.CloseAccount)),{account:p,instructionParams:f}}else{let k=ct({fromPublicKey:r,programId:d,assignSeed:l}),I=await this.scope.connection.getMinimumBalanceForRentExemption(dt.AccountLayout.span),A=Do.SystemProgram.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:k.seed,newAccountPubkey:k.publicKey,lamports:I+Number((P=(g=o.amount)==null?void 0:g.toString())!=null?P:0),space:dt.AccountLayout.span,programId:d});return f.instructions.push(A,_a({mint:n,tokenAccount:k.publicKey,owner:this.scope.ownerPubKey,programId:d})),f.instructionTypes.push(Y.CreateAccount),f.instructionTypes.push(Y.InitAccount),c||(f.endInstructions.push(zn({owner:r,payer:o.payer||r,tokenAccount:k.publicKey,programId:d})),f.endInstructionTypes.push(Y.CloseAccount)),{account:k.publicKey,instructionParams:f}}}async checkOrCreateAta({mint:t,programId:n=dt.TOKEN_PROGRAM_ID,autoUnwrapWSOLToSOL:o}){var c;await this.fetchWalletTokenAccounts();let i=(c=this.scope.account.tokenAccounts.find(({mint:u})=>(u==null?void 0:u.toBase58())===t.toBase58()))==null?void 0:c.publicKey,r=this.scope.ownerPubKey,a={};if(!i){let u=this.getAssociatedTokenAccount(t,n),l=await(0,dt.createAssociatedTokenAccountIdempotentInstruction)(r,u,r,t,n);a.instructions=[l],a.instructionTypes=[Y.CreateATA],i=u}return o&&ee.toBase58()===t.toBase58()&&(a.endInstructions=[zn({owner:r,payer:r,tokenAccount:i,programId:n})],a.endInstructionTypes=[Y.CloseAccount]),{pubKey:i,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:o,mint:i,programId:r=dt.TOKEN_PROGRAM_ID,tokenAccount:a,payer:c=this.scope.ownerPubKey,bypassAssociatedCheck:u,skipCloseAccount:l,checkCreateATAOwner:d}=t,p=this.getAssociatedTokenAccount(i,r);if(new Do.PublicKey(ee).equals(i)){let m=await oo({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:c,amount:o,skipCloseAccount:l});return N({tokenAccount:m.addresses.newAccount},m)}else if(!a||n==="out"&&!p.equals(a)&&!u){let m=[],f=(0,dt.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,p,this.scope.ownerPubKey,i,r);if(d){let y=await this.scope.connection.getAccountInfo(p);if(y===null)m.push(f);else if(!(y.owner.equals(dt.TOKEN_PROGRAM_ID)&&dt.AccountLayout.decode(y.data).mint.equals(i)&&dt.AccountLayout.decode(y.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${i.toString()}, ata: ${p.toString()}`)}else m.push(f);return{tokenAccount:p,instructions:m,instructionTypes:[Y.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:o=dt.TOKEN_PROGRAM_ID,amount:i,useSOLBalance:r,handleTokenAccount:a,feePayer:c}=t,u,l=this.createTxBuilder(c);if(n.equals(new Do.PublicKey(ee))&&r){let d=await this.handleTokenAccount({side:"in",amount:i||0,mint:n,bypassAssociatedCheck:!0,programId:o}),{tokenAccount:m}=d,f=tt(d,["tokenAccount"]);u=m,l.addInstruction(f)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:o}),!u&&a){let p=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:o}),{tokenAccount:m}=p,f=tt(p,["tokenAccount"]);u=m,l.addInstruction(f)}return N({tokenAccount:u},l.AllTxData)}};var Le=require("@solana/web3.js"),Cc=require("@solana/spl-token");var km=require("@solana/web3.js"),Tm=require("@solana/spl-token");function ne(s,e,t){return ae([s.toBuffer(),(t!=null?t:Tm.TOKEN_PROGRAM_ID).toBuffer(),e.toBuffer()],new km.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}var be=require("@solana/web3.js"),Va=new be.PublicKey("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ea=new be.PublicKey("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Da=new be.PublicKey("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Wo=new be.PublicKey("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),hm=new be.PublicKey("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Wa=new be.PublicKey("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),dr=new be.PublicKey("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),fi=new be.PublicKey("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Im=new be.PublicKey("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),pr=new be.PublicKey("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),_n=new be.PublicKey("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),qo=new be.PublicKey("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),yi=new be.PublicKey("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),io=new be.PublicKey("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Bm=new be.PublicKey("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),qa=new be.PublicKey("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Xn=new be.PublicKey("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ua=new be.PublicKey("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),xm=new be.PublicKey("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Uo=new be.PublicKey("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),bi=new be.PublicKey("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),lt=new be.PublicKey("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Sm=new be.PublicKey("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Vf=new be.PublicKey("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Ef=new be.PublicKey("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Km=new be.PublicKey("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Cm=new be.PublicKey("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX"),Ht={AMM_V4:fi,AMM_STABLE:Im,CLMM_PROGRAM_ID:_n,CLMM_LOCK_PROGRAM_ID:qo,CLMM_LOCK_AUTH_ID:yi,FARM_PROGRAM_ID_V3:Va,FARM_PROGRAM_ID_V4:Ea,FARM_PROGRAM_ID_V5:Da,FARM_PROGRAM_ID_V6:Wo,OPEN_BOOK_PROGRAM:Wa,SERUM_PROGRAM_ID_V3:dr,UTIL1216:hm,Router:Bm,CREATE_CPMM_POOL_PROGRAM:Xn,CREATE_CPMM_POOL_AUTH:Ua,CREATE_CPMM_POOL_FEE_ACC:xm,LOCK_CPMM_PROGRAM:Uo,LOCK_CPMM_AUTH:bi,LAUNCHPAD_PROGRAM:lt,LAUNCHPAD_AUTH:Sm,LAUNCHPAD_PLATFORM:Km,LAUNCHPAD_CONFIG:Cm,FEE_DESTINATION_ID:qa,MODEL_DATA_PUBKEY:io},Tn={OPEN_BOOK_PROGRAM:new be.PublicKey("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new be.PublicKey("Ray1111111111111111111111111111111111111111"),AMM_V4:new be.PublicKey("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new be.PublicKey("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new be.PublicKey("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new be.PublicKey("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new be.PublicKey("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new be.PublicKey("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new be.PublicKey("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new be.PublicKey("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new be.PublicKey("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new be.PublicKey("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:be.PublicKey.default,Router:new be.PublicKey("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new be.PublicKey("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new be.PublicKey("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new be.PublicKey("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new be.PublicKey("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new be.PublicKey("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new be.PublicKey("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new be.PublicKey("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new be.PublicKey("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new be.PublicKey("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new be.PublicKey("Ray1111111111111111111111111111111111111111")};var so=re(require("decimal.js"));var Ge=require("@solana/spl-token"),z=require("@solana/web3.js"),yt=re(require("bn.js")),jn=re(require("decimal.js"));var Rm=require("@solana/spl-token"),Lm=require("@solana/web3.js");var Ga=v([Qe("mintAuthorityOption"),M("mintAuthority"),w("supply"),V("decimals"),V("isInitialized"),Qe("freezeAuthorityOption"),M("freezeAuthority")]);var Df=async({connection:s,mint:e})=>{let t=await s.getAccountInfo(new Lm.PublicKey(e));return!t||t.data.length!==Ga.span?void 0:Ga.decode(t.data)},Wf=({mint:s,decimals:e,programId:t=Rm.TOKEN_PROGRAM_ID,logoURI:n="",priority:o=3})=>{let i=s.toBase58().substring(0,6);return{address:s.toBase58(),decimals:e,symbol:i,logoURI:n,extensions:{},chainId:101,programId:t.toString(),name:i,tags:[],priority:o}},gi=s=>new We({mint:s.address,decimals:s.decimals,symbol:s.symbol,name:s.name}),gt=o=>{var i=o,{amount:s,isRaw:e,name:t}=i,n=tt(i,["amount","isRaw","name"]);return new Ce(new We({mint:Vt(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),s,e,t)};function qf(s){return s.address===Mn.address?Lt:s}function Uf(s){return s.address===Lt.address?Mn:s}var Bt=o=>{var i=o,{address:s,programId:e,decimals:t}=i,n=tt(i,["address","programId","decimals"]);return N({chainId:101,address:Vt(s).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)},Vn=s=>s?E(N({},s),{transferFeeConfigAuthority:s.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:s.withdrawWithheldAuthority.toBase58(),withheldAmount:s.withheldAmount.toString(),olderTransferFee:E(N({},s.olderTransferFee),{epoch:s.olderTransferFee.epoch.toString(),maximumFee:s.olderTransferFee.maximumFee.toString()}),newerTransferFee:E(N({},s.newerTransferFee),{epoch:s.newerTransferFee.epoch.toString(),maximumFee:s.newerTransferFee.maximumFee.toString()})}):void 0;var fe=require("@solana/spl-token"),q=require("@solana/web3.js"),Br=re(require("bn.js"));var Fe=re(require("bn.js")),ve=new Fe.default(1).shln(64),Go=64,za=new Fe.default(1).shln(128),En=new Fe.default(1).shln(64).subn(1),fr=new Fe.default(1).shln(128).subn(1),bn=-443636,gn=443636,Nt=new Fe.default("4295048016"),Mt=new Fe.default("79226673521066979257578248091"),Ku=new Fe.default("59543866431248"),Cu=new Fe.default("184467440737095516"),Ru=new Fe.default("15793534762490258745"),Lu=16,yr=512,en=60,Gf=new Fe.default("18446743708227953217"),Ou=[{bit:0,factor:new Fe.default("fffcb933bd6fb800",16)},{bit:1,factor:new Fe.default("fff97272373d4000",16)},{bit:2,factor:new Fe.default("fff2e50f5f657000",16)},{bit:3,factor:new Fe.default("ffe5caca7e10f000",16)},{bit:4,factor:new Fe.default("ffcb9843d60f7000",16)},{bit:5,factor:new Fe.default("ff973b41fa98e800",16)},{bit:6,factor:new Fe.default("ff2ea16466c9b000",16)},{bit:7,factor:new Fe.default("fe5dee046a9a3800",16)},{bit:8,factor:new Fe.default("fcbe86c7900bb000",16)},{bit:9,factor:new Fe.default("f987a7253ac65800",16)},{bit:10,factor:new Fe.default("f3392b0822bb6000",16)},{bit:11,factor:new Fe.default("e7159475a2caf000",16)},{bit:12,factor:new Fe.default("d097f3bdfd2f2000",16)},{bit:13,factor:new Fe.default("a9f746462d9f8000",16)},{bit:14,factor:new Fe.default("70d869a156f31c00",16)},{bit:15,factor:new Fe.default("31be135f97ed3200",16)},{bit:16,factor:new Fe.default("9aa508b5b85a500",16)},{bit:17,factor:new Fe.default("5d6af8dedc582c",16)},{bit:18,factor:new Fe.default("2216e584f5fa",16)}],Yn=1e6,zf=1e5,Xa=(n=>(n[n.FromInput=0]="FromInput",n[n.TokenOnlyA=1]="TokenOnlyA",n[n.TokenOnlyB=2]="TokenOnlyB",n))(Xa||{}),Xf=1e3,br=1e5,Pi=1e4,Nu=1e4,Mu=1e5,Yf=60,Ai=3,Fu=100,Hf=15,vu=10,_u=100,zo=14,Om=(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))(Om||{}),Nm=(t=>(t[t.Enable=0]="Enable",t[t.Disable=1]="Disable",t))(Nm||{}),Mm=(o=>(o[o.Uninitialized=0]="Uninitialized",o[o.Initialized=1]="Initialized",o[o.Opening=2]="Opening",o[o.Ended=3]="Ended",o))(Mm||{}),Fm=(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))(Fm||{}),vm=(o=>(o[o.UpdateOperationOwner=0]="UpdateOperationOwner",o[o.RemoveOperationOwner=1]="RemoveOperationOwner",o[o.UpdateWhitelistMint=2]="UpdateWhitelistMint",o[o.RemoveWhitelistMint=3]="RemoveWhitelistMint",o))(vm||{}),Z=new Fe.default(0),pt=new Fe.default(1),Qf=new Fe.default(-1),gr={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 Zf(s){switch(s){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`${s} (unknown)`}}var jf=2,$f=new Fe.default("18446744073700000000");var Ya=v([xe(8),V("bump"),ut("index"),M("owner"),Qe("protocolFeeRate"),Qe("tradeFeeRate"),ut("tickSpacing"),Qe("fundFeeRate"),J(Qe(),1),M("fundOwner"),J(w(),3)]),_m=v([Qe("blockTimestamp"),Eo("tickCumulative"),J(w(),4)]),Vu=v([xe(8),Je("initialized"),w("recentEpoch"),ut("observationIndex"),M("poolId"),J(_m,Fu,"observations"),J(w(),4)]),Vm=v([ut("filterPeriod"),ut("decayPeriod"),ut("reductionFactor"),Qe("dynamicFeeControl"),Qe("maxVolatilityAccumulator"),bt("tickSpacingIndexReference"),Qe("volatilityReference"),Qe("volatilityAccumulator"),w("lastUpdateTimestamp"),J(V(),46)]),Em=v([V("state"),w("openTime"),w("endTime"),w("lastUpdateTime"),pe("emissionsPerSecondX64"),w("totalEmissioned"),w("claimed"),M("mint"),M("vault"),M("creator"),pe("growthGlobalX64")]),To=v([xe(8),V("bump"),M("configId"),M("creator"),M("mintA"),M("mintB"),M("vaultA"),M("vaultB"),M("observationId"),V("mintDecimalsA"),V("mintDecimalsB"),ut("tickSpacing"),pe("liquidity"),pe("sqrtPriceX64"),bt("tickCurrent"),Qe(),pe("feeGrowthGlobalX64A"),pe("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),J(pe(),4),V("status"),V("feeOn"),xe(6),J(Em,Ai,"rewardInfos"),xe(8*16,"tickArrayBitmap"),J(w(),4),w("fundFeesTokenA"),w("fundFeesTokenB"),w("startTime"),w("recentEpoch"),Vm.replicate("dynamicFeeInfo"),J(w(),46)]),Dm=v([pe("growthInsideLastX64"),w("rewardAmountOwed")]),Pr=v([xe(8),V("bump"),M("nftMint"),M("poolId"),bt("tickLower"),bt("tickUpper"),pe("liquidity"),pe("feeGrowthInsideLastX64A"),pe("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),J(Dm,Ai,"rewardInfos"),w("recentEpoch"),J(w(),7)]),Jf=v([xe(8),V("bump"),M("poolId"),bt("tickLower"),bt("tickUpper"),pe("liquidity"),pe("feeGrowthInsideLastX64A"),pe("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),J(pe(),Ai,"rewardGrowthInside"),w("recentEpoch"),J(w(),7)]),Wm=v([bt("tick"),Iu("liquidityNet"),pe("liquidityGross"),pe("feeGrowthOutsideX64A"),pe("feeGrowthOutsideX64B"),J(pe(),Ai,"rewardGrowthsOutsideX64"),w("orderPhase"),w("ordersAmount"),w("partFilledOrdersRemaining"),pe("unfilledRatioX64"),J(Qe(),3)]),Xo=v([xe(8),M("poolId"),bt("startTickIndex"),J(Wm,en,"ticks"),V("initializedTickCount"),w("recentEpoch"),J(V(),107)]),Eu=v([xe(8),V("bump"),J(M(),vu,"operationOwners"),J(M(),_u,"whitelistMints")]),ho=v([xe(8),M("poolId"),M("owner"),bt("tick"),Je("zeroForOne"),w("orderPhase"),w("totalAmount"),w("filledAmount"),w("settleBase"),w("settleOutput"),w("openTime"),pe("unfilledRatioX64"),J(w(),4)]),Ar=v([xe(8),M("poolId"),xe(8*8*zo,"positiveTickArrayBitmap"),xe(8*8*zo,"negativeTickArrayBitmap")]),ey=v([xe(8),ut("index"),ut("filterPeriod"),ut("decayPeriod"),ut("reductionFactor"),Qe("dynamicFeeControl"),Qe("maxVolatilityAccumulator"),J(w(),8)]),Du=v([xe(8),M("wallet"),V("nonceIndex"),w("orderNonce"),J(w(),4)]),ty=v([w(),V("bump"),M("owner"),M("poolId"),M("positionId"),M("nftAccount"),J(w(),8)]),Wu=v([xe(8),V("bump"),M("lockOwner"),M("poolId"),M("positionId"),M("nftAccount"),M("lockNftMint"),w("recentEpoch"),J(w(),8)]);var qm=re(require("bn.js"));function wr(s){let e=Buffer.alloc(2);return e.writeUInt16LE(s),e}function Ha(s){let e=Buffer.alloc(2);return e.writeUInt16BE(s),e}function Qa(s){let e=Buffer.alloc(4);return e.writeInt32LE(s),e}function qu(s){let e=Buffer.alloc(4);return e.writeInt32BE(s),e}function Uu(s){return(typeof s=="number"||typeof s=="bigint")&&(s=new qm.default(s.toString())),s.toArrayLike(Buffer,"be",8)}function Gu(s){let e=new ArrayBuffer(1);return new DataView(e).setUint8(0,s),new Uint8Array(e)}var Um=Buffer.from("amm_config","utf8"),kr=Buffer.from("pool","utf8"),Za=Buffer.from("pool_vault","utf8"),Gm=Buffer.from("pool_reward_vault","utf8"),zu=Buffer.from("position","utf8"),zm=Buffer.from("tick_array","utf8"),Xm=Buffer.from("operation","utf8"),Ym=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Hm=Buffer.from("observation","utf8"),Qm=Buffer.from("support_mint","utf8"),Zm=Buffer.from("dynamic_fee_config","utf8"),jm=Buffer.from("permission","utf8");function ny(s,e){return ae([Um,Ha(e)],s)}function Xu(s,e,t,n){return ae([kr,e.toBuffer(),t.toBuffer(),n.toBuffer()],s)}function Yu(s,e){return ae([jm,e.toBuffer()],s)}function Hu(s,e,t,n,o){return ae([kr,e.toBuffer(),t.toBuffer(),n.toBuffer(),wr(o)],s)}function ln(s,e,t){return ae([Za,e.toBuffer(),t.toBuffer()],s)}function Qu(s,e,t){return ae([Gm,e.toBuffer(),t.toBuffer()],s)}function Ee(s,e,t){return ae([zm,e.toBuffer(),qu(t)],s)}function hn(s,e,t,n){return ae([zu,e.toBuffer(),Qa(t),Qa(n)],s)}function mn(s,e){return ae([zu,e.toBuffer()],s)}function Hn(s){return ae([Buffer.from("metadata","utf8"),An.toBuffer(),s.toBuffer()],An)}function wi(s){return ae([Xm],s)}function Ze(s,e){return ae([Ym,e.toBuffer()],s)}function ja(s,e){return ae([Hm,e.toBuffer()],s)}function Io(s,e){return ae([Qm,e.toBuffer()],s)}function Zu(s,e,t,n){return ae([e.toBuffer(),t.toBuffer(),Uu(n)],s)}function oy(s,e){return ae([Zm,Ha(e)],s)}function ju(s,e,t){return ae([e.toBuffer(),Gu(t)],s)}var $u=Buffer.from("locked_position","utf8");function $a(s,e){return ae([$u,e.toBuffer()],s)}function Yo(s,e){return ae([$u,e.toBuffer()],s)}var nd=require("js-sha256");var In=re(require("bn.js")),Ja=re(require("decimal.js"));function es(s){return new In.default(1).shln(s).subn(1)}function iy(s,e,t){let n=s.add(e),o=es(t);if(n.gt(o))throw new Error(`Addition overflow: result exceeds ${t} bits`);return n}function ry(s,e){if(s.lt(e))throw new Error("Subtraction underflow");return s.sub(e)}function ay(s,e,t){let n=s.mul(e),o=es(t);if(n.gt(o))throw new Error(`Multiplication overflow: result exceeds ${t} bits`);return n}function sy(s,e){let t=s.mul(e),n=t.and(es(128)),o=t.shrn(128);return[n,o]}function Ye(s,e,t){if(t.isZero())throw new Error("Division by zero");return s.mul(e).div(t)}function je(s,e,t){if(t.isZero())throw new Error("Division by zero");let n=s.mul(e),o=n.div(t);return n.mod(t).isZero()?o:o.addn(1)}function uy(s,e,t,n){return n?je(s,e,t):Ye(s,e,t)}function Tr(s,e){return s.div(e).add(s.mod(e).isZero()?Z:pt)}function cy(s,e){let t=s.add(e);return t.gt(fr)?fr:t}function ly(s,e){return s.gt(e)?s.sub(e):new In.default(0)}function my(s,e){let t=s.mul(e);if(t.gt(fr))throw new Error("U128 multiplication overflow");return t}var dy=new In.default(1).shln(256).subn(1);function py(s,e,t){if(t.isZero())throw new Error("Division by zero");return s.mul(e).div(t)}function fy(s,e,t){if(t.isZero())throw new Error("Division by zero");let n=s.mul(e),o=n.div(t);return n.mod(t).isZero()?o:o.addn(1)}function Ju(s){return s.isZero()?-1:s.bitLength()-1}function yy(s){if(s.isZero())return-1;let e=0,t=s.clone();for(;t.and(new In.default(1)).isZero();)t=t.shrn(1),e++;return e}function by(s,e){return s.testn(e)}function gy(s,e){return s.or(new In.default(1).shln(e))}function Py(s,e){return s.and(new In.default(1).shln(e).notn(256))}function Ay(s,e){return s.xor(new In.default(1).shln(e))}function wy(s){let e=new In.default(1).shln(127);return s.and(e).isZero()?s:s.sub(new In.default(1).shln(128))}function ky(s){return s.isNeg()?s.add(new In.default(1).shln(128)):s}function Ty(s){return s.isNeg()?s.neg():s}function ec(s,e){return new Ja.default(s.toString()).div(Ja.default.pow(2,64)).toDecimalPlaces(e)}function Bo(s){return new In.default(s.mul(Ja.default.pow(2,64)).floor().toFixed())}function Gt(s,e){return s.add(za).sub(e).mod(za)}var $m=re(require("bn.js"));var xt=re(require("bn.js")),Ho=re(require("decimal.js"));var Qn=class{static scanLinearBitmap({bitmap:e,tickSpacing:t,offset:n,checkInfo:o}){let i=[],r=e.length*8,a=0,c=r-1;if(o){let d=o.tick/(t*en)-n;o.valueType==="gte"?a=Math.max(0,Math.ceil(d)):c=Math.min(r-1,Math.floor(d))}if(a>c)return i;let u=Math.floor(a/8),l=Math.floor(c/8);for(let d=u;d<=l;d++){if(!e[d])continue;let p=d===u?a%8:0,m=d===l?c%8:7;for(let f=p;f<=m;f++)e[d]&1<<f&&i.push((d*8+f+n)*t*en)}return i}static findPoolBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let o=Math.floor(n.tick/en/t);if(n.valueType==="lte"&&o<-512)return[];if(n.valueType==="gte"&&o>512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:-yr,checkInfo:n})}static findPositiveTickArrayBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let o=Math.floor(n.tick/en/t);if(n.valueType==="lte"&&o<512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:yr,checkInfo:n})}static findNegativeTickArrayBitmap({bitmap:e,tickSpacing:t,count:n,checkInfo:o}){let i=[];if(o){let c=Math.floor(o.tick/en/t);if(o.valueType==="gte"&&c>=-512)return i}let r=(o==null?void 0:o.valueType)==="lte"?Math.floor(o.tick/(en*t))+7680:1/0,a=(o==null?void 0:o.valueType)==="gte"?Math.ceil(o.tick/(en*t))+7680:0;e:for(let c=0;c<zo;c++){let u=zo-1-c;for(let l=0;l<512;l++){let d=c*512+l;if(d>r)break e;if(d<a)continue;let p=u*64+Math.floor(l/8);if(!e[p]){l=Math.floor(l/8)*8+7;continue}if(e[p]&1<<l%8){let m=(c*512+l-7680)*en*t;if(i.push(m),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=he.getTickArrayStartIndex(o.tickArrayCurrent,e),{count:r}=o;if(o.type==="oneForZero"){let a={tick:i,valueType:"gte"},c=[()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap,checkInfo:a}),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:a}),()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap,checkInfo:a})];return this.collectUntil(c,r)}if(o.type==="zeroForOne"){let a={tick:i,valueType:"lte"},c=[()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap,checkInfo:a}).sort((u,l)=>l-u),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:a}).sort((u,l)=>l-u),()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap,checkInfo:a}).sort((u,l)=>l-u)];return this.collectUntil(c,r)}throw new Error("find info type check error")}static collectUntil(e,t){let n=[];for(let o of e){if(t!==void 0&&n.length>=t)break;n.push(...o())}return n.slice(0,t)}static findTickArrayAddress(e){return this.findTickArrayStartIndex(e).map(t=>Ee(e.programId,e.poolId,t).publicKey)}static maxTickInTickarrayBitmap(e){return e*en*yr}},he=class{static firstinitializedTick({data:e,zeroForOne:t}){if(t){for(let n=e.ticks.length-1;n>=0;n--)if(se.isInitialized({data:e.ticks[n]}))return e.ticks[n]}else for(let n=0;n<e.ticks.length;n++)if(se.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(se.isInitialized({data:e.ticks[a]}))return e.ticks[a]}else for(let a=r+1;a<en;a++)if(se.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 en*e}static getMinTick(e){return Math.ceil(bn/e)*e}static getMaxTick(e){return Math.floor(gn/e)*e}},se=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>=bn&&e<=gn}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${bn}, ${gn}]`)}static getSqrtPriceAtTick(e){this.checkTick(e);let t=Math.abs(e),n=ve.clone();for(let{bit:o,factor:i}of Ou)(t&1<<o)!==0&&(n=Ye(n,i,ve));return e>0&&(n=Ye(ve,ve,n)),n}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:n}){if(n){let o=se.getPriceAtTick(t,!1);return Ye(e,o,ve)}else{let o=se.getPriceAtTick(t,!0);return Ye(e,ve,o)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:n}){if(n){let o=se.getPriceAtTick(t,!0);return je(e,o,ve)}else{let o=se.getPriceAtTick(t,!1);return je(e,ve,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:Z,amountOut:Z,ammFeeAmount:Z},c=this.limitOrderUnfilledAmount({tick:e});if(t.isZero()||c.isZero())return a;if(o)r?(a.ammFeeAmount=je(t,new xt.default(i),et),a.amountIn=t.sub(a.ammFeeAmount)):a.amountIn=t,a.amountOut=this.getLimitOrderOutput({amountIn:a.amountIn,tick:e.tick,zeroForOne:n}),a.amountOut.gt(c)&&(a.amountOut=c,a.amountIn=this.getLimitOrderInput({amountOut:c,tick:e.tick,zeroForOne:!n}),r&&(a.ammFeeAmount=je(a.amountIn,new xt.default(i),et.sub(new xt.default(i)))));else{let d=xt.default.min(t,c);r?a.amountOut=d:a.amountOut=xt.default.min(je(d,et,et.sub(new xt.default(i))),c),a.amountIn=this.getLimitOrderInput({amountOut:a.amountOut,tick:e.tick,zeroForOne:!n}),r&&(a.ammFeeAmount=je(a.amountIn,new xt.default(i),et.sub(new xt.default(i))))}let u=Z;e.partFilledOrdersRemaining.gt(Z)&&(u=xt.default.min(e.partFilledOrdersRemaining,a.amountOut),u.gt(Z)&&(e.unfilledRatioX64=Ye(e.unfilledRatioX64,e.partFilledOrdersRemaining.sub(u),e.partFilledOrdersRemaining)),e.partFilledOrdersRemaining=e.partFilledOrdersRemaining.sub(u));let l=a.amountOut.sub(u);if(l.gt(Z)){if(!e.partFilledOrdersRemaining.isZero())throw Error("!tick.partFilledOrdersRemaining.isZero()");if(e.ordersAmount.lt(l))throw Error("InvalidLimitOrderAmount");e.orderPhase=e.orderPhase.add(pt),e.unfilledRatioX64=Ye(ve,e.ordersAmount.sub(l),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(l),e.ordersAmount=Z}return r||(a.ammFeeAmount=je(a.amountOut,new xt.default(i),et),a.amountOut=a.amountOut.sub(a.ammFeeAmount)),a}static getPriceAtTick(e,t){let n=this.getSqrtPriceAtTick(e);return t?n.mul(n).add(ve.subn(1)).div(ve):n.mul(n).div(ve)}static getTickAtSqrtPrice(e){if(!(e.gte(Nt)&&e.lte(Mt)))throw Error("SqrtPriceX64");let t=Ju(e),n=t-64,o;n>=0?o=new xt.default(n).shln(32):o=new xt.default(-n).shln(32).neg();let i;t>=64?i=e.shrn(t-63):i=e.shln(63-t);let r=new xt.default(0),a=new xt.default(1).shln(63);for(let b=0;b<Lu&&!a.isZero();b++){i=i.mul(i);let g=i.shrn(127).toNumber();i=i.shrn(63+g),g&&(r=r.add(a)),a=a.shrn(1)}let c=r.shrn(32),l=o.add(c).mul(Ku),d=l.sub(Cu),p=l.add(Ru),m=this.signedShrn64(d),f=this.signedShrn64(p);return m===f?m:se.getSqrtPriceAtTick(f).lte(e)?f:m}static signedShrn64(e){if(e.isNeg()){let t=new xt.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 xt.default(10).pow(new xt.default(r)),c=o.mul(a),u=new xt.default(1).shln(128),d=c.div(u).toString();for(;d.length<=r;)d="0"+d;let p=d.slice(0,-r),m=d.slice(-r),f=p+"."+m;return new Ho.default(f).mul(new Ho.default(10).pow(i))}static tickToPrice(e,t,n){let o=se.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 Ho.default(1.0001).log()).floor();return Math.max(bn,Math.min(gn,i.toNumber()))}static priceToSqrtPriceX64(e,t,n){let r=e.div(Math.pow(10,t-n)).sqrt().mul(new Ho.default(2).pow(64));return new xt.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 Ho.default(1).div(r));let a=se.toTickIndex(se.priceToTick(r,t,n),i),c=se.tickToPrice(a,t,n);return{price:o?c:new Ho.default(1).div(c),tick:a}}};async function tc(s,e,t,n,o,i,r=!0){let a=[],c=Ze(s,t).publicKey,u=await e.getAccountInfo(c),l=Qn.findTickArrayAddress({programId:s,poolId:t,poolBitmap:i,tickArrayBitmap:Ar.decode(u.data),tickSpacing:o,findInfo:{type:r?"zeroForOne":"oneForZero",tickArrayCurrent:n}});return(await Rt(e,l)).forEach((p,m)=>{p&&a.push({address:l[m],value:Xo.decode(p.data)})}),a}var ro=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 Z;if(e.orderPhase.eq(t.orderPhase))return Z;if(e.orderPhase.add(pt).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 Z;let c=r?a:a.sub(pt);return se.getLimitOrderOutput({amountIn:c,tick:t.tick,zeroForOne:e.zeroForOne}).sub(e.settleOutput)}else{if(e.orderPhase.add(new $m.default(2)).lte(t.orderPhase))return se.getLimitOrderOutput({amountIn:e.settleBase,tick:t.tick,zeroForOne:e.zeroForOne}).sub(e.settleOutput);throw Error("invalid order phase")}}};var hr=re(require("bn.js")),nc=re(require("decimal.js"));var ft=class{static getDeltaAmountAUnsigned(e,t,n,o){e.gt(t)&&([e,t]=[t,e]);let i=n.shln(Go),r=t.sub(e);if(!e.gt(Z))throw Error("!sqrtPriceX64A.gt(BN_ZERO)");let a=o?Tr(je(i,r,t),e):Ye(i,r,t).div(e);if(a.gt(En))throw Error("MaxTokenOverflow");return a}static getDeltaAmountBUnsigned(e,t,n,o){e.gt(t)&&([e,t]=[t,e]);let i=o?je(n,t.sub(e),ve):Ye(n,t.sub(e),ve);if(i.gt(En))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 Z;e.gt(t)&&([e,t]=[t,e]);let o=Ye(e,t,ve),i=t.sub(e);return Ye(n,o,i)}static getLiquidityFromAmountB(e,t,n){if(n.isZero())return Z;e.gt(t)&&([e,t]=[t,e]);let o=t.sub(e);return Ye(n,ve,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=Z,a=Z;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:c,amountB:u}=this.getAmountsForLiquidity(e,t,n,o,r),l=i?1+a:1-a,d=new hr.default(new nc.default(c.toString()).mul(l).toFixed(0)),p=new hr.default(new nc.default(u.toString()).mul(l).toFixed(0));return{amountSlippageA:d,amountSlippageB:p}}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)?Z:this.getLiquidityFromAmountA(hr.default.max(e,t),n,o.amount);else if(o.type==="amountB")i=e.lte(t)?Z:this.getLiquidityFromAmountB(t,hr.default.min(e,n),o.amount);else throw Error("amount info type check error");return N({liquidity:i},this.getAmountsForLiquidity(e,t,n,o.amount,!0))}};var hy=({baseIn:s,price:e,mintADecimal:t,mintBDecimal:n,tickSpacing:o})=>{let i=se.priceToTick(e,t,n),r=se.toTickIndex(i,o),a=se.tickToPrice(r,t,n);return{tick:r,price:a}};var Qt=require("@solana/web3.js"),Ft=re(require("bn.js"));var Ir=require("@solana/spl-token");var Re=re(require("decimal.js"));var Zo=re(require("bn.js"));var Pt=re(require("bn.js"));var ki=class{static getNextSqrtPriceFromAmountARoundingUp(e,t,n,o){if(n.isZero())return e;let i=t.shln(Go);if(o){let r=n.mul(e),a=i.add(r);if(a.gte(i))return je(i,e,a);let c=Ye(i,pt,e);return je(i,pt,c.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 je(i,e,a)}}static getNextSqrtPriceFromAmountBRoundingDown(e,t,n,o){if(n.isZero())return e;if(o){let i=n.shln(Go).div(t);return e.add(i)}else{let i=Tr(n.shln(Go),t);return e.sub(i)}}static getNextSqrtPriceFromInput(e,t,n,o){if(!e.gt(Z))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(Z))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(Z))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(Z))throw Error("liquidity.gt(BN_ZERO)");return o?this.getNextSqrtPriceFromAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromAmountARoundingUp(e,t,n,!1)}};var Bn=class{static newValue({poolInfo:e,amountSpecified:t,zeroForOne:n,feeRate:o,blockTimestamp:i}){let r={amountSpecifiedRemaining:t,amountCalculated:Z,sqrtPriceX64:e.sqrtPriceX64,tick:e.tickCurrent,feeGrowthGlobalX64:n?e.feeGrowthGlobalX64A:e.feeGrowthGlobalX64B,lpFee:Z,protocolFee:Z,fundFee:Z,liquidity:e.liquidity,sqrtPriceNextX64:Z,tickNext:0,baseFeeRate:o,tickSpacing:e.tickSpacing,tickSpacingIndex:0,dynamicFeeInfo:Qo.getDynamicFeeInfo({poolInfo:e})};return r.dynamicFeeInfo&&(r.tickSpacingIndex=hi.tickSpacingIndexFromTick(r.tick,r.tickSpacing),Qo.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<bn?e.tickNext=bn:e.tickNext>gn&&(e.tickNext=gn),e.sqrtPriceNextX64=se.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||Qo.updateVolatilityAccumulator({state:e.dynamicFeeInfo,tickSpacingIndex:e.tickSpacingIndex})}static computeDynamicFeeRate({data:e,tickSpacing:t}){let n=e.volatilityAccumulator*t,o=n*n,i=Mu*Pi*Pi,r=je(new Pt.default(e.dynamicFeeControl),new Pt.default(o),new Pt.default(i)).toNumber();return r>br?br: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(br,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(bn,Math.min(gn,i)),a=se.getSqrtPriceAtTick(r);return n?{isSkipped:!1,boundedPrice:Pt.default.max(t,a)}:{isSkipped:!1,boundedPrice:Pt.default.min(t,a)}}static applySwapAmounts({state:e,amountIn:t,amountOut:n,feeAmount:o,isBaseInput:i,isFeeOnInput:r,protocolFeeRate:a,fundFeeRate:c}){let u=r?t.add(o):t;i?(e.amountSpecifiedRemaining=e.amountSpecifiedRemaining.sub(u),e.amountCalculated=e.amountCalculated.add(n)):(e.amountSpecifiedRemaining=e.amountSpecifiedRemaining.sub(n),e.amountCalculated=e.amountCalculated.add(u)),this.splitFee({state:e,feeAmount:o,protocolFeeRate:a,fundFeeRate:c})}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=hi.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(Z)){let r=t.mul(n).div(new Pt.default(et));e.protocolFee=e.protocolFee.add(r),i=i.sub(r)}if(o.gt(Z)){let r=t.mul(o).div(new Pt.default(et));e.fundFee=e.fundFee.add(r),i=i.sub(r)}if(e.liquidity.gt(Z)){let r=Ye(i,ve,e.liquidity);e.feeGrowthGlobalX64=e.feeGrowthGlobalX64.add(r),e.lpFee=e.lpFee.add(i)}}},Ti=class{static newSwapComputationResult({sqrtPriceNextX64:e}){return{sqrtPriceNextX64:e!=null?e:Z,amountIn:Z,amountOut:Z,feeAmount:Z}}static calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:o,isBaseInput:i}){if(i)try{return o?ft.getDeltaAmountAUnsigned(t,e,n,!0):ft.getDeltaAmountBUnsigned(e,t,n,!0)}catch(r){if(r.message==="MaxTokenOverflow")return null;throw r}else try{return o?ft.getDeltaAmountBUnsigned(t,e,n,!1):ft.getDeltaAmountAUnsigned(e,t,n,!1)}catch(r){if(r.message==="MaxTokenOverflow")return null;throw r}}static computeSwap(e,t,n,o,i,r,a,c){let u=this.newSwapComputationResult({});if(r){let d=c?Ye(o,new Pt.default(Yn-i),new Pt.default(Yn)):o,p=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:a,isBaseInput:r});p!==null&&(u.amountIn=p),u.sqrtPriceNextX64=p!==null&&d.gte(u.amountIn)?t:ki.getNextSqrtPriceFromInput(e,n,d,a)}else{let d=c?o:je(o,new Pt.default(Yn),new Pt.default(Yn-i)),p=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:a,isBaseInput:r});p!==null&&(u.amountOut=p),u.sqrtPriceNextX64=p!==null&&d.gte(u.amountOut)?t:ki.getNextSqrtPriceFromOutput(e,n,d,a)}if(a){if(!u.sqrtPriceNextX64.gte(t))throw Error("!result.sqrtPriceNextX64.gte(sqrtPriceTargetX64)")}else if(!t.gte(u.sqrtPriceNextX64))throw Error("!sqrtPriceTargetX64.gte(result.sqrtPriceNextX64)");let l=t.eq(u.sqrtPriceNextX64);if(a?(l&&r||(u.amountIn=ft.getDeltaAmountAUnsigned(u.sqrtPriceNextX64,e,n,!0)),l&&!r||(u.amountOut=ft.getDeltaAmountBUnsigned(u.sqrtPriceNextX64,e,n,!1))):(l&&r||(u.amountIn=ft.getDeltaAmountBUnsigned(e,u.sqrtPriceNextX64,n,!0)),l&&!r||(u.amountOut=ft.getDeltaAmountAUnsigned(e,u.sqrtPriceNextX64,n,!1))),r)c?u.sqrtPriceNextX64.eq(t)?u.feeAmount=je(u.amountIn,new Pt.default(i),new Pt.default(Yn-i)):u.feeAmount=o.sub(u.amountIn):(u.feeAmount=je(u.amountOut,new Pt.default(i),new Pt.default(Yn)),u.amountOut=u.amountOut.sub(u.feeAmount),l||(u.amountIn=o));else if(c)u.amountOut=Pt.default.min(u.amountOut,o),u.feeAmount=je(u.amountIn,new Pt.default(i),new Pt.default(Yn-i));else{u.feeAmount=je(u.amountOut,new Pt.default(i),new Pt.default(Yn));let d=u.amountOut.sub(u.feeAmount);d.gt(o)?(u.feeAmount=u.amountOut.sub(o),u.amountOut=o):u.amountOut=d}return u}};function ts({programId:s,poolId:e,poolInfo:t,tickArrays:n,configInfo:o,tickarrayBitmapExtension:i,amountSpecified:r,sqrtPriceLimitX64:a,zeroForOne:c,isBaseInput:u,blockTimestamp:l,includeExtraTickArrays:d}){a.isZero()&&(a=c?new Zo.default(Nt).addn(1):new Zo.default(Mt).subn(1));let p=0;if(n.length===0)return{allTrade:!1,amountSpecifiedRemaining:r,amountCalculated:Z,feeAmount:Z,sqrtPriceX64:t.sqrtPriceX64,liquidity:t.liquidity,tickCurrent:t.tickCurrent,accounts:[]};let m=d?Qn.findTickArrayAddress({programId:s,poolId:e,tickSpacing:t.tickSpacing,poolBitmap:t.tickArrayBitmap,tickArrayBitmap:i,findInfo:{type:c?"oneForZero":"zeroForOne",count:2,tickArrayCurrent:t.tickCurrent}}).filter(h=>h.toString()!==n[0].address.toString()):[],f=he.getTickArrayStartIndex(t.tickCurrent,t.tickSpacing),{firstItckArrayContainsPoolTick:y,firstValidTickArrayStartIndex:b}={firstItckArrayContainsPoolTick:n[p].value.startTickIndex===f,firstValidTickArrayStartIndex:n[p].value.startTickIndex},g=y,P=b,k=n[p],I=tn.isFeeOnInput(t.feeOn,c),A=Bn.newValue({poolInfo:t,amountSpecified:r,zeroForOne:c,feeRate:o.tradeFeeRate,blockTimestamp:l});for(;!A.amountSpecifiedRemaining.isZero()&&!A.sqrtPriceX64.eq(a);){let h=(()=>{let K=he.nextInitalizedTick({data:k.value,tickSpacing:A.tickSpacing,zeroForOne:c,currentTickIndex:A.tick});if(K!==void 0)return K;if(g){let x=n[++p];return x===void 0?void 0:(P=x.value.startTickIndex,k=x,he.firstinitializedTick({data:x.value,zeroForOne:c}))}else return g=!0,he.firstinitializedTick({data:k.value,zeroForOne:c})})();if(h===void 0)return{allTrade:!1,amountSpecifiedRemaining:A.amountSpecifiedRemaining,amountCalculated:A.amountCalculated,feeAmount:A.lpFee.add(A.fundFee).add(A.protocolFee),sqrtPriceX64:A.sqrtPriceX64,liquidity:A.liquidity,tickCurrent:A.tick,accounts:n.slice(0,p).map(K=>K.address)};let B=Bn.getTargetPriceBasedOnNextTick({data:A,tickNext:h.tick,zeroForOne:c,sqrtPriceLimitX64:a}),S=A.liquidity;do{Bn.updateVolatilityAccumulator({state:A});let K=Bn.getTotalFeeRate({data:A}),{isSkipped:x,boundedPrice:C}=Bn.getSpacingBoundedPrice({data:A,targetPrice:B,zeroForOne:c}),L=!A.sqrtPriceX64.eq(C),O;L?(O=Ti.computeSwap(A.sqrtPriceX64,C,A.liquidity,A.amountSpecifiedRemaining,K,u,c,I),Bn.applySwapAmounts({state:A,amountIn:O.amountIn,amountOut:O.amountOut,feeAmount:O.feeAmount,isBaseInput:u,isFeeOnInput:I,protocolFeeRate:new Zo.default(o.protocolFeeRate),fundFeeRate:new Zo.default(o.fundFeeRate)})):O=Ti.newSwapComputationResult({sqrtPriceNextX64:C});let R=se.limitOrderUnfilledAmount({tick:h});if(A.sqrtPriceNextX64.eq(O.sqrtPriceNextX64)){let F=se.matchLimitOrder({tick:h,swapAmount:A.amountSpecifiedRemaining,swapDirectionZeroForOne:c,isBaseInput:u,feeRate:K,isFeeOnInput:I});if(F.amountIn.gt(Z)&&Bn.applySwapAmounts({state:A,amountIn:F.amountIn,amountOut:F.amountOut,feeAmount:F.ammFeeAmount,isBaseInput:u,isFeeOnInput:I,protocolFeeRate:new Zo.default(o.protocolFeeRate),fundFeeRate:new Zo.default(o.fundFeeRate)}),se.hasLiquidity({data:h})&&!se.hasLimitOrders({data:h})){let W=c?h.liquidityNet.neg():h.liquidityNet;S=ft.addDelta(A.liquidity,W)}A.tick=c&&!se.hasLimitOrders({data:h})||!c&&se.hasLimitOrders({data:h})?A.tickNext-1:A.tickNext}else A.sqrtPriceX64.eq(O.sqrtPriceNextX64)||(A.tick=se.getTickAtSqrtPrice(O.sqrtPriceNextX64));if(A.sqrtPriceX64=O.sqrtPriceNextX64,Bn.updateDynamicFeeIndex({state:A,zeroForOne:c,isSkippedTickSpacing:x}),A.amountSpecifiedRemaining.isZero()||A.sqrtPriceX64.eq(B)){let F=se.limitOrderUnfilledAmount({tick:h});if(!A.amountSpecifiedRemaining.isZero()&&!F.eq(R)&&!F.isZero())throw Error("!limitOrderUnfilledAmountAfter.isZero()");break}}while(!0);A.liquidity=S}return{allTrade:!0,amountSpecifiedRemaining:Z,amountCalculated:A.amountCalculated,feeAmount:A.lpFee.add(A.fundFee).add(A.protocolFee),sqrtPriceX64:A.sqrtPriceX64,liquidity:A.liquidity,tickCurrent:A.tick,accounts:[...m,...n.slice(0,p+1+(d?1:0)).map(h=>h.address)]}}var hi=class{static tickSpacingIndexFromTick(e,t){return Math.floor(e/t)}},Qo=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/Nu),e.lastUpdateTimestamp=new Ft.default(n)):(e.tickSpacingIndexReference=t,e.volatilityReference=0,e.lastUpdateTimestamp=new Ft.default(n)))}static updateVolatilityAccumulator({state:e,tickSpacingIndex:t}){let n=Math.abs(e.tickSpacingIndexReference-t),o=e.volatilityReference+n*Pi;e.volatilityAccumulator=Math.min(o,e.maxVolatilityAccumulator)}},tn=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=he.getTickArrayStartIndex(i,e);if(r>=n||r<o)return!0}return!1}static tickArrayStartIndexRange({tickSpacing:e}){let t=Qn.maxTickInTickarrayBitmap(e),n=-t;return t>gn&&(t=he.getTickArrayStartIndex(gn,e)+he.tickCount(e)),n<bn&&(n=he.getTickArrayStartIndex(bn,e)),{maxTickBoundary:t,minTickBoundary:n}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:o,rewardInfos:i}){var a,c,u;let r=[];for(let l=0;l<i.length;l++){let d=i[l],p=(u=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(d.mint))==null?void 0:c.owner;if(p===void 0)throw Error("get new reward mint info error");let m=E(N({},d),{perSecond:ec(d.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Qt.PublicKey(p)});if(m.mint.equals(Qt.PublicKey.default)||m.totalEmissioned.eq(En))continue;if(n<=m.openTime.toNumber()||o.eq(Z)){r.push(m);continue}let f=new Ft.default(Math.min(m.endTime.toNumber(),n)),y=f.sub(m.lastUpdateTime);if(y.isZero()){r.push(m);continue}let b=je(y,m.emissionsPerSecondX64,ve),g=Ye(y,m.emissionsPerSecondX64,o),P,k=m.totalEmissioned.add(b);if(k.lte(En))P=k;else{let A=En.sub(m.totalEmissioned);P=En,g=Ye(A,ve,o)}let I=m.growthGlobalX64.add(g);r.push(E(N({},m),{growthGlobalX64:I,totalEmissioned:P,lastUpdateTime:f}))}return r}},At=class{static getOutputAmountAndRemainAccounts(e,t,n,o,i,r,a){let c=o.toBase58()===e.mintA.address,u=he.getTickArrayStartIndex(e.accInfo.tickCurrent,e.accInfo.tickSpacing),{allTrade:l,amountCalculated:d,feeAmount:p,sqrtPriceX64:m,accounts:f}=ts({programId:e.programId,poolId:e.id,poolInfo:e.accInfo,tickArrays:Object.entries(n).map(y=>({address:y[1].address,value:y[1]})).filter(y=>c?y.value.startTickIndex<=u:y.value.startTickIndex>=u).sort((y,b)=>c?b.value.startTickIndex-y.value.startTickIndex:y.value.startTickIndex-b.value.startTickIndex),configInfo:e.ammConfig,tickarrayBitmapExtension:t,amountSpecified:i,sqrtPriceLimitX64:a!=null?a:Z,zeroForOne:c,isBaseInput:!0,blockTimestamp:r,includeExtraTickArrays:!0});return{allTrade:l,expectedAmountOut:d,remainingAccounts:f,executionPrice:m,feeAmount:p}}static getInputAmountAndRemainAccounts(e,t,n,o,i,r,a){let c=o.toBase58()===e.mintB.address,u=he.getTickArrayStartIndex(e.accInfo.tickCurrent,e.accInfo.tickSpacing),{allTrade:l,amountCalculated:d,feeAmount:p,sqrtPriceX64:m,accounts:f}=ts({programId:e.programId,poolId:e.id,poolInfo:e.accInfo,tickArrays:Object.entries(n).map(y=>({address:new Qt.PublicKey(y[0]),value:y[1]})).filter(y=>c?y.value.startTickIndex<=u:y.value.startTickIndex>=u).sort((y,b)=>c?b.value.startTickIndex-y.value.startTickIndex:y.value.startTickIndex-b.value.startTickIndex),configInfo:e.ammConfig,tickarrayBitmapExtension:t,amountSpecified:i,sqrtPriceLimitX64:a!=null?a:Z,zeroForOne:c,isBaseInput:!1,blockTimestamp:r,includeExtraTickArrays:!0});return{allTrade:l,expectedAmountIn:d,remainingAccounts:f,executionPrice:m,feeAmount:p}}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let o=await Ue(e,t.map(r=>({pubkey:r})),{batchRequest:n}),i={};for(let r of o)r.accountInfo!==null&&(i[r.pubkey.toString()]=Ar.decode(r.accountInfo.data));return i}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let o={},i=[];for(let c of t){let u=[...Qn.findTickArrayStartIndex({tickSpacing:c.tickSpacing,poolBitmap:c.tickArrayBitmap,tickArrayBitmap:c.exBitmapInfo,findInfo:{type:"zeroForOne",count:7,tickArrayCurrent:c.tickCurrent}}),...Qn.findTickArrayStartIndex({tickSpacing:c.tickSpacing,poolBitmap:c.tickArrayBitmap,tickArrayBitmap:c.exBitmapInfo,findInfo:{type:"oneForZero",count:7,tickArrayCurrent:c.tickCurrent}})];for(let l of u){let{publicKey:d}=Ee(c.programId,c.id,l);o[d.toString()]===void 0&&(i.push({pubkey:d}),o[d.toString()]=c.id)}}let r=await Ue(e,i,{batchRequest:n}),a={};for(let c of r){if(!c.accountInfo)continue;let u=o[c.pubkey.toString()];if(!u)continue;a[u.toString()]===void 0&&(a[u.toString()]={});let l=Xo.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]=E(N({},l),{address:c.pubkey})}return a}static computeAmountOut({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:o,epochInfo:i,amountIn:r,slippage:a,blockTimestamp:c,priceLimit:u=new Re.default(0)}){var O;let l,d=o.toBase58()===e.mintA.address,[p,m]=d?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];u.equals(new Re.default(0))?l=d?Nt.add(new Ft.default(1)):Mt.sub(new Ft.default(1)):l=se.priceToSqrtPriceX64(u,e.mintA.decimals,e.mintB.decimals);let f=St(r,p,i,!1),{allTrade:y,expectedAmountOut:b,remainingAccounts:g,executionPrice:P,feeAmount:k}=At.getOutputAmountAndRemainAccounts(e,t,n,o,f.amount.sub((O=f.fee)!=null?O:Z),c,l),I=St(b,m,i,!1),A=se.sqrtPriceX64ToPrice(P,e.mintA.decimals,e.mintB.decimals),h=d?A:new Re.default(1).div(A),B=b.mul(new Ft.default(Math.floor((1-a)*1e10))).div(new Ft.default(1e10)),S=St(B,m,i,!1),K=d?e.currentPrice:new Re.default(1).div(e.currentPrice),x=new Re.default(h).sub(K).abs(),C=K,L=new at(new Re.default(x).mul(10**15).toFixed(0),new Re.default(C).mul(10**15).toFixed(0));return{allTrade:y,realAmountIn:f,amountOut:I,minAmountOut:S,expirationTime:Zn(f.expirationTime,I.expirationTime),currentPrice:e.currentPrice,executionPrice:h,priceImpact:L,fee:k,remainingAccounts:g,executionPriceX64:P}}static computeAmountOutFormat({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,amountIn:o,tokenOut:i,slippage:r,epochInfo:a,blockTimestamp:c,catchLiquidityInsufficient:u=!1}){let l=i.address===e.mintB.address,[d,p]=l?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,f]=[new We(E(N({},d),{mint:d.address,isToken2022:d.programId===Ir.TOKEN_2022_PROGRAM_ID.toBase58()})),new We(E(N({},p),{mint:p.address,isToken2022:p.programId===Ir.TOKEN_2022_PROGRAM_ID.toBase58()}))],{allTrade:y,realAmountIn:b,amountOut:g,minAmountOut:P,expirationTime:k,currentPrice:I,executionPrice:A,priceImpact:h,fee:B,remainingAccounts:S,executionPriceX64:K}=At.computeAmountOut({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:new Qt.PublicKey(d.address),amountIn:o,slippage:r,epochInfo:a,catchLiquidityInsufficient:u,blockTimestamp:c}),x=E(N({},b),{amount:new Ce(m,b.amount),fee:b.fee===void 0?void 0:new Ce(m,b.fee)}),C=E(N({},g),{amount:new Ce(f,g.amount),fee:g.fee===void 0?void 0:new Ce(f,g.fee)}),L=E(N({},P),{amount:new Ce(f,P.amount),fee:P.fee===void 0?void 0:new Ce(f,P.fee)}),O=new ht({baseToken:m,denominator:new Ft.default(10).pow(new Ft.default(20+m.decimals)),quoteToken:f,numerator:I.mul(new Re.default(10**(20+f.decimals))).toFixed(0)}),R=new ht({baseToken:m,denominator:new Ft.default(10).pow(new Ft.default(20+m.decimals)),quoteToken:f,numerator:A.mul(new Re.default(10**(20+f.decimals))).toFixed(0)}),F=new Ce(m,B);return{allTrade:y,realAmountIn:x,amountOut:C,minAmountOut:L,expirationTime:k,currentPrice:O,executionPrice:R,priceImpact:h,fee:F,remainingAccounts:S,executionPriceX64:K}}static computeAmountIn({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:o,epochInfo:i,amountOut:r,slippage:a,priceLimit:c=new Re.default(0),blockTimestamp:u}){var O;let l=o.toBase58()===e.mintA.address,d={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},p;c.equals(new Re.default(0))?p=l?Mt.sub(new Ft.default(1)):Nt.add(new Ft.default(1)):p=se.priceToSqrtPriceX64(c,e.mintA.decimals,e.mintB.decimals);let m=St(r,d[o.toString()],i,!0),{allTrade:f,expectedAmountIn:y,remainingAccounts:b,executionPrice:g,feeAmount:P}=At.getInputAmountAndRemainAccounts(e,t,n,o,m.amount.sub((O=m.fee)!=null?O:Z),u,p),k=l?e.mintB.address:e.mintA.address,I=St(y,d[k],i,!1),A=se.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),h=l?A:new Re.default(1).div(A),B=y.mul(new Ft.default(Math.floor((1+a)*1e10))).div(new Ft.default(1e10)),S=St(B,d[k],i,!0),K=l?e.currentPrice:new Re.default(1).div(e.currentPrice),x=new Re.default(h).sub(K).abs(),C=K,L=new at(new Re.default(x).mul(10**15).toFixed(0),new Re.default(C).mul(10**15).toFixed(0));return{allTrade:f,amountIn:I,maxAmountIn:S,realAmountOut:m,expirationTime:Zn(I.expirationTime,m.expirationTime),currentPrice:e.currentPrice,executionPrice:h,priceImpact:L,fee:P,remainingAccounts:b}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:o}){var f,y,b;let i=e[t],r=se.tickToPrice(n,e.mintA.decimals,e.mintB.decimals).toNumber(),a=se.tickToPrice(o,e.mintA.decimals,e.mintB.decimals).toNumber(),c=Math.max(r,i.priceMin),l=Math.min(a,i.priceMax)-c,d=a-r,p=i.priceMax-i.priceMin,m;return l<=0?m=0:d===l?m=p/l:p===l?m=l/d:m=l/p*(l/d),{feeApr:i.feeApr*m,rewardsApr:[((f=i.rewardApr[0])!=null?f:0)*m,((y=i.rewardApr[1])!=null?y:0)*m,((b=i.rewardApr[2])!=null?b:0)*m],apr:i.apr*m}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:o,liquidity:i,positionTickLowerIndex:r,positionTickUpperIndex:a,chainTime:c}){let u=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],d=o[Vt(e.mintA.address).toString()],p=o[Vt(e.mintB.address).toString()],m=e.mintA.decimals,f=e.mintB.decimals;if(!l||!d||!p)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let y=se.priceToSqrtPriceX64(new Re.default(e.price),e.mintA.decimals,e.mintB.decimals),b=se.getSqrtPriceAtTick(r),g=se.getSqrtPriceAtTick(a),{amountSlippageA:P,amountSlippageB:k}=ft.getAmountsFromLiquidityWithSlippage(y,b,g,t,!1,!1,0),{amountSlippageA:I,amountSlippageB:A}=ft.getAmountsFromLiquidityWithSlippage(y,b,g,i,!1,!1,0),h=new Re.default(P.toString()).div(new Re.default(10).pow(m)).mul(d.value).add(new Re.default(k.toString()).div(new Re.default(10).pow(f)).mul(p.value)),B=new Re.default(I.toString()).div(new Re.default(10).pow(m)).mul(d.value).add(new Re.default(A.toString()).div(new Re.default(10).pow(f)).mul(p.value)),S=new Re.default(1).div(h.add(B)),x=new Re.default(l.volumeFee).mul(365).div(u).mul(S).mul(100).toNumber(),C=3600*24*365,L=e.rewardDefaultInfos.map(O=>{var W,D;let R=O.mint.decimals,F=o[O.mint.address];return c<((W=O.startTime)!=null?W:0)||c>((D=O.endTime)!=null?D:0)||!O.perSecond||!F||R===void 0?0:new Re.default(F.value).mul(new Re.default(O.perSecond).mul(C)).div(new Re.default(10).pow(R)).mul(S).mul(100).toNumber()});return{feeApr:x,rewardsApr:L,apr:x+L.reduce((O,R)=>O+R,0)}}static async getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:o,amount:i,slippage:r,add:a,epochInfo:c,amountHasFee:u}){var g,P;let l=se.priceToSqrtPriceX64(new Re.default(e.price),e.mintA.decimals,e.mintB.decimals),d=se.getSqrtPriceAtTick(n),p=se.getSqrtPriceAtTick(o),m=St(i,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,c,!u),f=new Ft.default(new Re.default(m.amount.sub((P=m.fee)!=null?P:Z).toString()).toFixed(0)),y;if(l.lte(d))y=t?ft.getLiquidityFromAmountA(d,p,f):new Ft.default(0);else if(l.lte(p)){let k=ft.getLiquidityFromAmountA(l,p,f),I=ft.getLiquidityFromAmountB(d,l,f);y=t?k:I}else y=t?new Ft.default(0):ft.getLiquidityFromAmountB(d,p,f);let b=await At.getAmountsFromLiquidity({epochInfo:c,poolInfo:e,tickLower:n,tickUpper:o,liquidity:y,slippage:r,add:a});return{liquidity:y,amountA:t?m:b.amountA,amountB:t?b.amountB:m,amountSlippageA:t?m:b.amountSlippageA,amountSlippageB:t?b.amountSlippageB:m,expirationTime:b.expirationTime}}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:o,liquidity:i,slippage:r,add:a}){var b,g,P,k;let c=se.getSqrtPriceAtTick(n),u=se.getSqrtPriceAtTick(o),l=a?1+r:1-r,d=ft.getAmountsForLiquidity(se.priceToSqrtPriceX64(new Re.default(t.price),t.mintA.decimals,t.mintB.decimals),c,u,i,a),[p,m]=[St(d.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),St(d.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[f,y]=[St(d.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),St(d.amountB.muln(l),(k=t.mintB.extensions)==null?void 0:k.feeConfig,e,!0)];return{liquidity:i,amountA:p,amountB:m,amountSlippageA:f,amountSlippageB:y,expirationTime:Zn(p.expirationTime,m.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let o=t.filter(u=>!n[u.id]).map(u=>new Qt.PublicKey(u.id));(await Rt(e,o)).forEach((u,l)=>{!u||(n[o[l].toBase58()]=To.decode(u.data))});let r=t.map(u=>Ze(new Qt.PublicKey(u.programId),new Qt.PublicKey(u.id)).publicKey),a=await At.fetchExBitmaps({connection:e,exBitmapAddress:r,batchRequest:!1}),c={};return t.reduce((u,l)=>E(N({},u),{[l.id]:E(N({accInfo:n[l.id]},n[l.id]),{id:new Qt.PublicKey(l.id),version:6,programId:new Qt.PublicKey(l.programId),mintA:l.mintA,mintB:l.mintB,ammConfig:E(N({},l.config),{id:new Qt.PublicKey(l.config.id),fundOwner:""}),currentPrice:new Re.default(l.price),exBitmapAccount:Ze(new Qt.PublicKey(l.programId),new Qt.PublicKey(l.id)).publicKey,exBitmapInfo:a[Ze(new Qt.PublicKey(l.programId),new Qt.PublicKey(l.id)).publicKey.toBase58()],startTime:n[l.id].startTime.toNumber(),rewardInfos:n[l.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=he.getTickArrayStartIndex(o,i),a=Ee(t,n,r).publicKey,c=await e.getAccountInfo(a);if(!c)throw new Error(`tick array ${a.toBase58()} not found`);return Xo.decode(c.data)}static async fetchMultipleTickArrayInfo({connection:e,tickInfoList:t}){let n=t.map(i=>{let r=he.getTickArrayStartIndex(i.tick,i.tickSpacing);return Ee(i.programId,i.poolId,r).publicKey});return(await Rt(e,n)).map(i=>i&&Xo.decode(i.data))}},oc={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};function ic(s,e){let t=e!=null?e:{};return E(N({},s),{type:"Concentrated",programId:s.programId.toString(),id:s.id.toString(),rewardDefaultInfos:s.rewardInfos.filter(n=>!n.mint.equals(Qt.PublicKey.default)).map(n=>{var o,i;return{mint:Bt({address:n.mint.toBase58(),programId:Ir.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:s.currentPrice.toNumber(),mintAmountA:0,mintAmountB:0,feeRate:s.ammConfig.tradeFeeRate,openTime:s.startTime.toString(),tvl:0,day:oc,week:oc,month:oc,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,burnPercent:0,config:E(N({},s.ammConfig),{id:s.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),hasDynamicFee:!1,feeOn:"",launchMigratePool:!1,tips:[]})}var jo=re(require("bn.js"));var rc=class{static getfeeGrowthInside(e,t,n){let o=new jo.default(0),i=new jo.default(0);e.tickCurrent>=t.tick?(o=t.feeGrowthOutsideX64A,i=t.feeGrowthOutsideX64B):(o=Gt(e.feeGrowthGlobalX64A,t.feeGrowthOutsideX64A),i=Gt(e.feeGrowthGlobalX64B,t.feeGrowthOutsideX64B));let r=new jo.default(0),a=new jo.default(0);e.tickCurrent<n.tick?(r=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(r=Gt(e.feeGrowthGlobalX64A,n.feeGrowthOutsideX64A),a=Gt(e.feeGrowthGlobalX64B,n.feeGrowthOutsideX64B));let c=Gt(Gt(e.feeGrowthGlobalX64A,o),r),u=Gt(Gt(e.feeGrowthGlobalX64B,i),a);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:u}}static GetPositionFees(e,t,n,o){let{feeGrowthInsideX64A:i,feeGrowthInsideBX64:r}=this.getfeeGrowthInside(e,n,o),a=Ye(Gt(i,t.feeGrowthInsideLastX64A),t.liquidity,ve),c=t.tokenFeesOwedA.add(a),u=Ye(Gt(r,t.feeGrowthInsideLastX64B),t.liquidity,ve),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}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 c=r[a],u=t.rewardInfos[a],l=Gt(c,u.growthInsideLastX64),d=Ye(l,t.liquidity,ve),p=u.rewardAmountOwed.add(d);i.push(p)}return i}static getRewardGrowthInside(e,t,n,o){let i=[];for(let r=0;r<o.length;r++){let a=new jo.default(0);t.liquidityGross.eqn(0)?a=o[r].growthGlobalX64:e<t.tick?a=Gt(o[r].growthGlobalX64,t.rewardGrowthsOutsideX64[r]):a=t.rewardGrowthsOutsideX64[r];let c=new jo.default(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[r]:c=Gt(o[r].growthGlobalX64,n.rewardGrowthsOutsideX64[r])),i.push(Gt(Gt(o[r].growthGlobalX64,a),c))}return i}};function Dt(s){let e=`global:${s}`;return Buffer.from(nd.sha256.digest(e)).slice(0,8)}Vu.span;var Jm=Se("Raydium_Clmm"),Wt={createPool:Dt("create_pool"),createCustomizablePool:Dt("create_customizable_pool"),createPermissionedPool:Dt("create_permissioned_pool"),openPositionV2:Dt("open_position_v2"),openPositionWithToken22Nft:Dt("open_position_with_token22_nft"),closePosition:Dt("close_position"),increaseLiquidityV2:Dt("increase_liquidity_v2"),decreaseLiquidityV2:Dt("decrease_liquidity_v2"),initializeReward:Dt("initialize_reward"),setRewardParams:Dt("set_reward_params"),updateRewardInfos:Dt("update_reward_infos"),collectRemainingRewards:Dt("collect_remaining_rewards"),swapV2:Dt("swap_v2"),openLimitOrder:Dt("open_limit_order"),increaseLimitOrder:Dt("increase_limit_order"),decreaseLimitOrder:Dt("decrease_limit_order"),settleLimitOrder:Dt("settle_limit_order"),closeLimitOrder:Dt("close_limit_order")},ed=[188,37,179,131,82,150,84,73],td=[16,72,250,198,14,162,212,19],ke=class{static createPoolInstruction(e,t,n,o,i,r,a,c,u,l,d,p,m,f){let y=v([pe("sqrtPriceX64"),w("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:u,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:q.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:Tt,isSigner:!1,isWritable:!1},...(f!=null?f:[]).map(k=>({pubkey:k,isSigner:!1,isWritable:!1}))],g=Buffer.alloc(y.span);y.encode({sqrtPriceX64:m,startTime:Z},g);let P=Buffer.from([...Wt.createPool,...g]);return new q.TransactionInstruction({keys:b,programId:e,data:P})}static createCustomizablePoolInstruction(e,t,n,o,i,r,a,c,u,l,d,p,m,f,y,b){let g=v([pe("sqrtPriceX64"),V("collectFeeOn"),Je("enableDynamicFee")]),P=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:q.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:Tt,isSigner:!1,isWritable:!1},...y.map(A=>({pubkey:A,isSigner:!1,isWritable:!1})),...b?[{pubkey:b,isSigner:!1,isWritable:!1}]:[]],k=Buffer.alloc(g.span);g.encode({sqrtPriceX64:m,collectFeeOn:f,enableDynamicFee:b!==void 0},k);let I=Buffer.from([...Wt.createCustomizablePool,...k]);return new q.TransactionInstruction({keys:P,programId:e,data:I})}static createPermissionedPoolInstruction(e,t,n,o,i,r,a,c,u,l,d,p,m,f,y,b,g,P,k){let I=v([pe("sqrtPriceX64"),V("collectFeeOn"),Je("enableDynamicFee"),ut("seedIndex")]),A=[{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:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:q.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:Tt,isSigner:!1,isWritable:!1},...P.map(S=>({pubkey:S,isSigner:!1,isWritable:!1})),...k?[{pubkey:k,isSigner:!1,isWritable:!1}]:[]],h=Buffer.alloc(I.span);I.encode({sqrtPriceX64:y,collectFeeOn:b,enableDynamicFee:k!==void 0,seedIndex:g},h);let B=Buffer.from([...Wt.createPermissionedPool,...h]);return new q.TransactionInstruction({keys:A,programId:e,data:B})}static initializeRewardInstruction(e,t,n,o,i,r,a,c,u,l,d,p){let m=v([w("openTime"),w("endTime"),pe("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:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:q.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:Tt,isSigner:!1,isWritable:!1}],y=Buffer.alloc(m.span);m.encode({openTime:l,endTime:d,emissionsPerSecondX64:p},y);let b=Buffer.from([...Wt.initializeReward,...y]);return new q.TransactionInstruction({keys:f,programId:e,data:b})}static updateRewardInfosInstruction(e,t){let n=[{pubkey:t,isSigner:!1,isWritable:!0}],o=Buffer.from([...Wt.updateRewardInfos]);return new q.TransactionInstruction({keys:n,programId:e,data:o})}static setRewardParamsInstruction(e,t,n,o,i,r,a,c,u,l,d,p){let m=v([V("rewardIndex"),pe("emissionsPerSecondX64"),w("openTime"),w("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:fe.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:fe.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],y=Buffer.alloc(m.span);m.encode({rewardIndex:u,emissionsPerSecondX64:p,openTime:l,endTime:d},y);let b=Buffer.from([...Wt.setRewardParams,...y]);return new q.TransactionInstruction({keys:f,programId:e,data:b})}static closePositionInstruction(e,t,n,o,i,r,a){let c=[{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:q.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:r?fe.TOKEN_2022_PROGRAM_ID:fe.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1}];a&&c.push({pubkey:a,isSigner:!1,isWritable:!0});let u=Buffer.from([...Wt.closePosition]);return new q.TransactionInstruction({keys:c,programId:e,data:u})}static openPositionV2Instruction(e,t,n,o,i,r,a,c,u,l,d,p,m,f,y,b,g,P,k,I,A,h,B,S,K,x,C){let L=v([bt("tickLower"),bt("tickUpper"),bt("tickArrayLowerStart"),bt("tickArrayUpperStart"),pe("liquidity"),w("amountMaxA"),w("amountMaxB"),Je("withMetadata"),V("optionBaseFlag"),Je("baseFlag")]),O=[{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:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:Tt,isSigner:!1,isWritable:!1},{pubkey:q.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:fe.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:fe.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:fe.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...C?[{pubkey:C,isSigner:!1,isWritable:!0}]:[]],R=Buffer.alloc(L.span);L.encode({tickLower:P,tickUpper:k,tickArrayLowerStart:I,tickArrayUpperStart:A,liquidity:h,amountMaxA:B,amountMaxB:S,withMetadata:K,optionBaseFlag:x!==null?1:0,baseFlag:x!=null?x:!1},R);let F=Buffer.from([...Wt.openPositionV2,...R]);return new q.TransactionInstruction({keys:O,programId:e,data:F})}static increaseLiquidityV2Instruction(e,t,n,o,i,r,a,c,u,l,d,p,m,f,y,b,g,P,k){let I=v([pe("liquidity"),w("amountMaxA"),w("amountMaxB"),V("optionBaseFlag"),Je("baseFlag")]),A=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:fe.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:fe.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],h=Buffer.alloc(I.span);I.encode({liquidity:y,amountMaxA:b,amountMaxB:g,optionBaseFlag:P!==null?1:0,baseFlag:P!=null?P:!1},h);let B=Buffer.from([...Wt.increaseLiquidityV2,...h]);return new q.TransactionInstruction({keys:A,programId:e,data:B})}static decreaseLiquidityV2Instruction(e,t,n,o,i,r,a,c,u,l,d,p,m,f,y,b,g,P,k){let I=v([pe("liquidity"),w("amountMinA"),w("amountMinB")]),A=[{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:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:fe.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:fe.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:cn,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...k?[{pubkey:k,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()],h=Buffer.alloc(I.span);I.encode({liquidity:b,amountMinA:g,amountMinB:P},h);let B=Buffer.from([...Wt.decreaseLiquidityV2,...h]);return new q.TransactionInstruction({keys:A,programId:e,data:B})}static swapV2Instruction(e,t,n,o,i,r,a,c,u,l,d,p,m,f,y,b,g){let P=v([w("amount"),w("otherAmountThreshold"),pe("sqrtPriceLimitX64"),Je("isBaseInput")]),k=[{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:c,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:fe.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:fe.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:cn,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...d.map(h=>({pubkey:h,isSigner:!1,isWritable:!0}))],I=Buffer.alloc(P.span);P.encode({amount:m,otherAmountThreshold:f,sqrtPriceLimitX64:y,isBaseInput:b},I);let A=Buffer.from([...Wt.swapV2,...I]);return new q.TransactionInstruction({keys:k,programId:e,data:A})}static collectRemainingRewardsInstruction(e,t,n,o,i,r,a){let c=v([V("rewardIndex")]),u=[{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:fe.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:fe.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:cn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let d=Buffer.from([...Wt.collectRemainingRewards,...l]);return new q.TransactionInstruction({keys:u,programId:e,data:d})}static openPositionWithToken22NftInstruction(e,t,n,o,i,r,a,c,u,l,d,p,m,f,y,b,g,P,k,I,A,h,B,S,K,x){let C=v([bt("tickLower"),bt("tickUpper"),bt("tickArrayLowerStart"),bt("tickArrayUpperStart"),pe("liquidity"),w("amountMaxA"),w("amountMaxB"),Je("withMetadata"),V("optionBaseFlag"),Je("baseFlag")]),L=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:Tt,isSigner:!1,isWritable:!1},{pubkey:q.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:fe.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:fe.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:fe.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...x?[{pubkey:x,isSigner:!1,isWritable:!0}]:[]],O=Buffer.alloc(C.span);C.encode({tickLower:g,tickUpper:P,tickArrayLowerStart:k,tickArrayUpperStart:I,liquidity:A,amountMaxA:h,amountMaxB:B,withMetadata:S,optionBaseFlag:K!==null?1:0,baseFlag:K!=null?K:!1},O);let R=Buffer.from([...Wt.openPositionWithToken22Nft,...O]);return new q.TransactionInstruction({keys:L,programId:e,data:R})}static openLimitOrderInstruction(e,t,n,o,i,r,a,c,u,l,d,p,m,f,y,b,g,P){let k=v([V("nonceIndex"),Je("zeroForOne"),bt("tickIndex"),w("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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:q.SystemProgram.programId,isSigner:!1,isWritable:!1},...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],A=Buffer.alloc(k.span);k.encode({nonceIndex:f,zeroForOne:y,tickIndex:b,amount:g},A);let h=Buffer.from([...Wt.openLimitOrder,...A]);return new q.TransactionInstruction({keys:I,programId:e,data:h})}static increaseLimitOrderInstruction(e,t,n,o,i,r,a,c,u,l){let d=v([w("amount")]),p=[{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:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1}],m=Buffer.alloc(d.span);d.encode({amount:l},m);let f=Buffer.from([...Wt.increaseLimitOrder,...m]);return new q.TransactionInstruction({keys:p,programId:e,data:f})}static decreaseLimitOrderInstruction(e,t,n,o,i,r,a,c,u,l,d,p,m,f){let y=v([w("amount"),w("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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:fe.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:fe.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},...f?[{pubkey:f,isSigner:!1,isWritable:!0}]:[]],g=Buffer.alloc(y.span);y.encode({amount:p,amountMin:m},g);let P=Buffer.from([...Wt.decreaseLimitOrder,...g]);return new q.TransactionInstruction({keys:b,programId:e,data:P})}static settleLimitOrderInstruction(e,t,n,o,i,r,a,c,u){let l=[{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:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1}],d=Buffer.from([...Wt.settleLimitOrder]);return new q.TransactionInstruction({keys:l,programId:e,data:d})}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([...Wt.closeLimitOrder]);return new q.TransactionInstruction({keys:i,programId:e,data:r})}static createPoolInstructions(e){let{programId:t,owner:n,mintA:o,mintB:i,ammConfigId:r,initialPriceX64:a,extendMintAccount:c}=e,[u,l]=[new q.PublicKey(o.address),new q.PublicKey(i.address)],[d,p]=[new q.PublicKey(o.programId||fe.TOKEN_PROGRAM_ID),new q.PublicKey(i.programId||fe.TOKEN_PROGRAM_ID)],{publicKey:m}=Xu(t,r,u,l),{publicKey:f}=ja(t,m),{publicKey:y}=ln(t,m,u),{publicKey:b}=ln(t,m,l),g=Ze(t,m).publicKey,P=[this.createPoolInstruction(t,m,n,r,f,u,y,d,l,b,p,g,a,c)];return{signers:[],instructions:P,instructionTypes:[Y.CreateAccount,Y.ClmmCreatePool],address:{poolId:m,observationId:f,exBitmapAccount:g,mintA:u,mintB:l,mintAProgram:d,mintBProgram:p,mintAVault:y,mintBVault:b},lookupTableAddress:[]}}static createPermissionedPoolInstructions(e){let{programId:t,owner:n,mintA:o,mintB:i,ammConfigId:r,initialPriceX64:a,extendMintAccount:c,payer:u,seedIndex:l}=e,[d,p]=[new q.PublicKey(o.address),new q.PublicKey(i.address)],[m,f]=[new q.PublicKey(o.programId||fe.TOKEN_PROGRAM_ID),new q.PublicKey(i.programId||fe.TOKEN_PROGRAM_ID)],{publicKey:y}=Hu(t,r,d,p,l),{publicKey:b}=Yu(t,u),{publicKey:g}=ja(t,y),{publicKey:P}=ln(t,y,d),{publicKey:k}=ln(t,y,p),I=Ze(t,y).publicKey,A=[this.createPoolInstruction(t,y,n,r,g,d,P,m,p,k,f,I,a,c)];return{signers:[],instructions:A,instructionTypes:[Y.CreateAccount,Y.ClmmCreatePool],address:{poolId:y,observationId:g,exBitmapAccount:I,mintA:d,mintB:p,mintAProgram:m,mintBProgram:f,mintAVault:P,mintBVault:k,permission:b},lookupTableAddress:[]}}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,liquidity:r,amountMaxA:a,amountMaxB:c,base:u,withMetadata:l,getEphemeralSigners:d,nft2022:p}){let m=[],[f,y]=[new q.PublicKey(e.programId),new q.PublicKey(e.id)],b;if(d)b=new q.PublicKey((await d(1))[0]);else{let x=q.Keypair.generate();m.push(x),b=x.publicKey}let g=he.getTickArrayStartIndex(o,e.config.tickSpacing),P=he.getTickArrayStartIndex(i,e.config.tickSpacing),{publicKey:k}=Ee(f,y,g),{publicKey:I}=Ee(f,y,P),{publicKey:A}=p?ne(n.wallet,b,fe.TOKEN_2022_PROGRAM_ID):ne(n.wallet,b,fe.TOKEN_PROGRAM_ID),{publicKey:h}=Hn(b),{publicKey:B}=mn(f,b),{publicKey:S}=hn(f,y,o,i),K=p?this.openPositionWithToken22NftInstruction(f,n.feePayer,y,n.wallet,b,A,S,k,I,B,n.tokenAccountA,n.tokenAccountB,new q.PublicKey(t.vault.A),new q.PublicKey(t.vault.B),new q.PublicKey(e.mintA.address),new q.PublicKey(e.mintB.address),o,i,g,P,r,a,c,l==="create",u&&u==="MintA",tn.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[g,P]})?Ze(f,y).publicKey:void 0):this.openPositionV2Instruction(f,n.feePayer,y,n.wallet,b,A,h,S,k,I,B,n.tokenAccountA,n.tokenAccountB,new q.PublicKey(t.vault.A),new q.PublicKey(t.vault.B),new q.PublicKey(e.mintA.address),new q.PublicKey(e.mintB.address),o,i,g,P,r,a,c,l==="create",null,tn.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[g,P]})?Ze(f,y).publicKey:void 0);return{signers:m,instructions:[K],instructionTypes:[Y.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:k,tickArrayUpper:I,positionNftAccount:A,metadataAccount:h,personalPosition:B,protocolPosition:S}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,base:r,baseAmount:a,otherAmountMax:c,liquidity:u,withMetadata:l,getEphemeralSigners:d,nft2022:p}){let m=[],[f,y]=[new q.PublicKey(e.programId),new q.PublicKey(e.id)],b;if(d)b=new q.PublicKey((await d(1))[0]);else{let x=q.Keypair.generate();m.push(x),b=x.publicKey}let g=he.getTickArrayStartIndex(o,e.config.tickSpacing),P=he.getTickArrayStartIndex(i,e.config.tickSpacing),{publicKey:k}=Ee(f,y,g),{publicKey:I}=Ee(f,y,P),{publicKey:A}=p?ne(n.wallet,b,fe.TOKEN_2022_PROGRAM_ID):ne(n.wallet,b,fe.TOKEN_PROGRAM_ID),{publicKey:h}=Hn(b),{publicKey:B}=mn(f,b),{publicKey:S}=hn(f,y,o,i),K=p?this.openPositionWithToken22NftInstruction(f,n.feePayer,y,n.wallet,b,A,S,k,I,B,n.tokenAccountA,n.tokenAccountB,new q.PublicKey(t.vault.A),new q.PublicKey(t.vault.B),new q.PublicKey(e.mintA.address),new q.PublicKey(e.mintB.address),o,i,g,P,u,!r||r==="MintA"?a:c,!r||r==="MintA"?c:a,l==="create",r&&r==="MintA",tn.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[g,P]})?Ze(f,y).publicKey:void 0):this.openPositionV2Instruction(f,n.feePayer,y,n.wallet,b,A,h,S,k,I,B,n.tokenAccountA,n.tokenAccountB,new q.PublicKey(t.vault.A),new q.PublicKey(t.vault.B),new q.PublicKey(e.mintA.address),new q.PublicKey(e.mintB.address),o,i,g,P,Z,r==="MintA"?a:c,r==="MintA"?c:a,l==="create",r==="MintA",tn.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[g,P]})?Ze(f,y).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:k,tickArrayUpper:I,positionNftAccount:A,metadataAccount:h,personalPosition:B,protocolPosition:S},instructions:[K],signers:m,instructionTypes:[Y.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,liquidity:r,amountMaxA:a,amountMaxB:c,base:u,withMetadata:l,getEphemeralSigners:d,nft2022:p}){let m,f=[];if(d)m=new q.PublicKey((await d(1))[0]);else{let x=q.Keypair.generate();f.push(x),m=x.publicKey}let[y,b]=[new q.PublicKey(e.programId),new q.PublicKey(e.id)],g=he.getTickArrayStartIndex(o,e.config.tickSpacing),P=he.getTickArrayStartIndex(i,e.config.tickSpacing),{publicKey:k}=Ee(y,b,g),{publicKey:I}=Ee(y,b,P),{publicKey:A}=p?ne(n.wallet,m,fe.TOKEN_2022_PROGRAM_ID):ne(n.wallet,m,fe.TOKEN_PROGRAM_ID),{publicKey:h}=Hn(m),{publicKey:B}=mn(y,m),{publicKey:S}=hn(y,b,o,i),K=p?this.openPositionWithToken22NftInstruction(y,n.wallet,b,n.wallet,m,A,S,k,I,B,n.tokenAccountA,n.tokenAccountB,new q.PublicKey(t.vault.A),new q.PublicKey(t.vault.B),new q.PublicKey(t.mintA.address),new q.PublicKey(t.mintB.address),o,i,g,P,r,a,c,l==="create",u&&u==="MintA",tn.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[g,P]})?Ze(y,b).publicKey:void 0):this.openPositionV2Instruction(y,n.wallet,b,n.wallet,m,A,h,S,k,I,B,n.tokenAccountA,n.tokenAccountB,new q.PublicKey(t.vault.A),new q.PublicKey(t.vault.B),new q.PublicKey(t.mintA.address),new q.PublicKey(t.mintB.address),o,i,g,P,r,a,c,l==="create",null,tn.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[g,P]})?Ze(y,b).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:k,tickArrayUpper:I,positionNftAccount:A,metadataAccount:h,personalPosition:B,protocolPosition:S},instructions:[K],signers:f,instructionTypes:[Y.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:o,nft2022:i}){let r=new q.PublicKey(e.programId),a=i?ne(n.wallet,o.nftMint,fe.TOKEN_2022_PROGRAM_ID).publicKey:ne(n.wallet,o.nftMint,fe.TOKEN_PROGRAM_ID).publicKey,{publicKey:c}=mn(r,o.nftMint),u=[];return u.push(this.closePositionInstruction(r,n.wallet,o.nftMint,a,c,!!i,new q.PublicKey(e.id))),{address:{positionNftAccount:a,personalPosition:c},signers:[],instructions:u,instructionTypes:[Y.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:i,amountMaxA:r,amountMaxB:a,nft2022:c}){let[u,l]=[new q.PublicKey(e.programId),new q.PublicKey(e.id)],d=he.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),p=he.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:m}=Ee(u,l,d),{publicKey:f}=Ee(u,l,p),{publicKey:y}=c?ne(o.wallet,n.nftMint,fe.TOKEN_2022_PROGRAM_ID):ne(o.wallet,n.nftMint,fe.TOKEN_PROGRAM_ID),{publicKey:b}=mn(u,n.nftMint),{publicKey:g}=hn(u,l,n.tickLower,n.tickUpper),P=this.increaseLiquidityV2Instruction(u,o.wallet,y,b,l,g,m,f,o.tokenAccountA,o.tokenAccountB,new q.PublicKey(t.vault.A),new q.PublicKey(t.vault.B),new q.PublicKey(e.mintA.address),new q.PublicKey(e.mintB.address),i,r,a,null,tn.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[d,p]})?Ze(u,l).publicKey:void 0);return{address:{tickArrayLower:m,tickArrayUpper:f,positionNftAccount:y,personalPosition:b,protocolPosition:g},signers:[],instructions:[P],instructionTypes:[Y.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,base:i,baseAmount:r,otherAmountMax:a,nft2022:c}){let[u,l]=[new q.PublicKey(e.programId),new q.PublicKey(e.id)],d=he.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),p=he.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:m}=Ee(u,l,d),{publicKey:f}=Ee(u,l,p),{publicKey:y}=c?ne(o.wallet,n.nftMint,fe.TOKEN_2022_PROGRAM_ID):ne(o.wallet,n.nftMint,fe.TOKEN_PROGRAM_ID),{publicKey:b}=mn(u,n.nftMint),{publicKey:g}=hn(u,l,n.tickLower,n.tickUpper);return{address:{tickArrayLower:m,tickArrayUpper:f,positionNftAccount:y,personalPosition:b,protocolPosition:g},instructions:[this.increaseLiquidityV2Instruction(u,o.wallet,y,b,l,g,m,f,o.tokenAccountA,o.tokenAccountB,new q.PublicKey(t.vault.A),new q.PublicKey(t.vault.B),new q.PublicKey(e.mintA.address),new q.PublicKey(e.mintB.address),Z,i==="MintA"?r:a,i==="MintA"?a:r,i==="MintA",tn.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[d,p]})?Ze(u,l).publicKey:void 0)],signers:[],instructionTypes:[Y.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:i,amountMinA:r,amountMinB:a,programId:c,nft2022:u}){let[l,d]=[new q.PublicKey(e.programId),new q.PublicKey(e.id)],p=he.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),m=he.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:f}=Ee(l,d,p),{publicKey:y}=Ee(l,d,m),{publicKey:b}=u?ne(o.wallet,n.nftMint,fe.TOKEN_2022_PROGRAM_ID):ne(o.wallet,n.nftMint,c),{publicKey:g}=mn(l,n.nftMint),{publicKey:P}=hn(l,d,n.tickLower,n.tickUpper),k=new Map;for(let B=0;B<t.rewardInfos.length;B++)k.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,K=k.get(S);K&&I.push({poolRewardVault:new q.PublicKey(t.rewardInfos[B].vault),ownerRewardVault:K,rewardMint:new q.PublicKey(S)})}let A=[],h=this.decreaseLiquidityV2Instruction(l,o.wallet,b,g,d,P,f,y,o.tokenAccountA,o.tokenAccountB,new q.PublicKey(t.vault.A),new q.PublicKey(t.vault.B),new q.PublicKey(e.mintA.address),new q.PublicKey(e.mintB.address),I,i,r,a,tn.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[p,m]})?Ze(l,d).publicKey:void 0);return A.push(h),{address:{tickArrayLower:f,tickArrayUpper:y,positionNftAccount:b,personalPosition:g,protocolPosition:P},signers:[],instructions:A,instructionTypes:[Y.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:o,inputMint:i,amountIn:r,amountOutMin:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,d]=[new q.PublicKey(e.programId),new q.PublicKey(e.id)],[p,m]=[new q.PublicKey(t.vault.A),new q.PublicKey(t.vault.B)],[f,y]=[new q.PublicKey(e.mintA.address),new q.PublicKey(e.mintB.address)],b=e.mintA.address.toString()===i.toString(),g=[this.swapV2Instruction(l,o.wallet,d,new q.PublicKey(e.config.id),b?o.tokenAccountA:o.tokenAccountB,b?o.tokenAccountB:o.tokenAccountA,b?p:m,b?m:p,b?f:y,b?y:f,u,n,r,a,c,!0,Ze(l,d).publicKey)];return{signers:[],instructions:g,instructionTypes:[Y.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:o,outputMint:i,amountOut:r,amountInMax:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,d]=[new q.PublicKey(e.programId),new q.PublicKey(e.id)],[p,m]=[new q.PublicKey(t.vault.A),new q.PublicKey(t.vault.B)],[f,y]=[new q.PublicKey(e.mintA.address),new q.PublicKey(e.mintB.address)],b=e.mintB.address.toString()===i.toBase58(),g=[this.swapV2Instruction(l,o.wallet,d,new q.PublicKey(e.config.id),b?o.tokenAccountA:o.tokenAccountB,b?o.tokenAccountB:o.tokenAccountA,b?p:m,b?m:p,b?f:y,b?y:f,u,n,r,a,c,!1,Ze(l,d).publicKey)];return{signers:[],instructions:g,instructionTypes:[Y.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:o}){let[i,r]=[new q.PublicKey(e.programId),new q.PublicKey(e.id)],a=Qu(i,r,o.mint).publicKey,c=wi(i).publicKey,u=[this.initializeRewardInstruction(i,n.wallet,r,c,new q.PublicKey(e.config.id),n.tokenAccount,o.programId,o.mint,a,new Br.default(o.openTime),new Br.default(o.endTime),o.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:u,instructionTypes:[Y.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:o}){let[i,r]=[new q.PublicKey(e.programId),new q.PublicKey(e.id)],a,c,u;for(let p=0;p<e.rewardDefaultInfos.length;p++)e.rewardDefaultInfos[p].mint.address===o.mint.toString()&&(a=p,c=new q.PublicKey(t.rewardInfos[p].vault),u=new q.PublicKey(t.rewardInfos[p].mint.address));(a===void 0||c===void 0)&&Jm.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=wi(i).publicKey,d=[this.setRewardParamsInstruction(i,n.wallet,r,l,new q.PublicKey(e.config.id),n.tokenAccount,c,u,a,new Br.default(o.openTime),new Br.default(o.endTime),o.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:d,instructionTypes:[Y.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:o}){let[i,r]=[new q.PublicKey(e.programId),new q.PublicKey(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===o.toString()&&(a=l,c=new q.PublicKey(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&Jm.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=[this.collectRemainingRewardsInstruction(i,n.wallet,r,n.tokenAccount,c,o,a)];return{address:{rewardVault:c},signers:[],instructions:u,instructionTypes:[Y.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async makeLockPositions({programId:e,authProgramId:t,poolProgramId:n,payer:o,wallet:i,nftMint:r,nft2022:a,getEphemeralSigners:c}){let u=[],l;if(c)l=new q.PublicKey((await c(1))[0]);else{let g=q.Keypair.generate();u.push(g),l=g.publicKey}let d=a?ne(i,r,fe.TOKEN_2022_PROGRAM_ID).publicKey:ne(i,r,fe.TOKEN_PROGRAM_ID).publicKey,{publicKey:p}=mn(n,r),m=Yo(e,l).publicKey,f=ne(i,l,fe.TOKEN_PROGRAM_ID).publicKey,y=Hn(l).publicKey,b=ke.lockPositionInstructionV2({programId:e,auth:t,payer:o,positionOwner:i,lockOwner:i,positionNftAccount:d,positionId:p,lockPositionId:m,lockNftMint:l,lockNftAccount:f,metadataAccount:y,withMetadata:!0,nft2022:a,positionNftMint:r,authPositionNftAccount:ne(t,r,a?fe.TOKEN_2022_PROGRAM_ID:fe.TOKEN_PROGRAM_ID).publicKey,positionNftProgram:a?fe.TOKEN_2022_PROGRAM_ID:fe.TOKEN_PROGRAM_ID});return{address:{positionId:p,lockPositionId:m,lockNftAccount:f,lockNftMint:l,positionNftAccount:d,metadataAccount:y},instructions:[b],signers:u,instructionTypes:[Y.ClmmLockPosition],lookupTableAddress:[]}}static lockPositionInstructionV2({programId:e,auth:t,payer:n,positionOwner:o,lockOwner:i,positionNftAccount:r,positionId:a,positionNftMint:c,authPositionNftAccount:u,positionNftProgram:l,lockPositionId:d,lockNftMint:p,lockNftAccount:m,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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!0,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:fe.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:Tt,isSigner:!1,isWritable:!1},{pubkey:fe.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:q.SystemProgram.programId,isSigner:!1,isWritable:!1}],g=v([Je("withMetadata")]),P=Buffer.alloc(g.span);g.encode({withMetadata:y},P);let k=Buffer.from([...ed,...P]);return new q.TransactionInstruction({keys:b,programId:e,data:k})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:o,positionNft:i}){let{publicKey:r}=ne(o,i,fe.TOKEN_PROGRAM_ID),{publicKey:a}=mn(n,i),c=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:$a(e,a).publicKey,isSigner:!1,isWritable:!0},{pubkey:fe.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:q.SystemProgram.programId,isSigner:!1,isWritable:!1}];return new q.TransactionInstruction({keys:c,programId:e,data:Buffer.from(ed)})}static harvestLockPositionInstruction(e){let[t,n]=[new q.PublicKey(e.poolKeys.programId),new q.PublicKey(e.poolKeys.id)],o=he.getTickArrayStartIndex(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),i=he.getTickArrayStartIndex(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:r}=Ee(t,n,o),{publicKey:a}=Ee(t,n,i),{publicKey:c}=ne(e.owner,e.ownerPosition.nftMint,fe.TOKEN_PROGRAM_ID),{publicKey:u}=mn(t,e.ownerPosition.nftMint),{publicKey:l}=hn(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),d=[];for(let f=0;f<e.poolKeys.rewardInfos.length;f++)d.push({poolRewardVault:new q.PublicKey(e.poolKeys.rewardInfos[f].vault),ownerRewardVault:e.ownerRewardAccounts[f],rewardMint:new q.PublicKey(e.poolKeys.rewardInfos[f].mint.address)});let p=[...d.map(f=>[{pubkey:f.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:f.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:f.rewardMint,isSigner:!1,isWritable:!1}]).flat()],m=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:$a(e.programId,u).publicKey,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e.owner,isSigner:!0,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:new q.PublicKey(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new q.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:fe.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:fe.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:cn,isSigner:!1,isWritable:!1},{pubkey:new q.PublicKey(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new q.PublicKey(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...p];return new q.TransactionInstruction({keys:m,programId:e.programId,data:Buffer.from(td)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:o,lockOwner:i,lockNftMint:r,lockNftAccount:a,positionNftAccount:c,positionId:u,poolId:l,protocolPosition:d,vaultA:p,vaultB:m,tickArrayLower:f,tickArrayUpper:y,userVaultA:b,userVaultB:g,mintA:P,mintB:k,rewardAccounts:I,exTickArrayBitmap:A}){let h=[...A?[{pubkey:A,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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:fe.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:fe.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:cn,isSigner:!1,isWritable:!1},{pubkey:P,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},...h];return new q.TransactionInstruction({keys:B,programId:e,data:Buffer.from(td)})}};var Ii=class extends st{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var A;let{programId:t,owner:n=((A=this.scope.owner)==null?void 0:A.publicKey)||z.PublicKey.default,mint1:o,mint2:i,ammConfig:r,initialPrice:a,computeBudgetConfig:c,txVersion:u,txTipConfig:l,feePayer:d}=e,p=this.createTxBuilder(d),[m,f,y]=new yt.default(new z.PublicKey(o.address).toBuffer()).gt(new yt.default(new z.PublicKey(i.address).toBuffer()))?[i,o,new jn.default(1).div(a)]:[o,i,a],b=se.priceToSqrtPriceX64(y,m.decimals,f.decimals),g=[],P=[];m.programId===Ge.TOKEN_2022_PROGRAM_ID.toBase58()&&P.push(Io(t,new z.PublicKey(m.address)).publicKey),f.programId===Ge.TOKEN_2022_PROGRAM_ID.toBase58()&&P.push(Io(t,new z.PublicKey(f.address)).publicKey),(await this.scope.connection.getMultipleAccountsInfo(P)).forEach((h,B)=>{h&&g.push(P[B])});let I=await ke.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:m,mintB:f,ammConfigId:r.id,initialPriceX64:b,extendMintAccount:g});return p.addInstruction(I),p.addCustomComputeBudget(c),p.addTipInstruction(l),p.versionBuild({txVersion:u,extInfo:{address:E(N({},I.address),{observationId:I.address.observationId.toBase58(),exBitmapAccount:I.address.exBitmapAccount.toBase58(),programId:t.toString(),id:I.address.poolId.toString(),mintA:m,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:N({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:I.address.poolId.toString(),mintA:m,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:[]},gr)}})}async createCustomizablePool(e){var K;let{programId:t,owner:n=((K=this.scope.owner)==null?void 0:K.publicKey)||z.PublicKey.default,mint1:o,mint2:i,initialPrice:r,ammConfig:a,collectFeeOn:c=0,dynamicFeeConfig:u,computeBudgetConfig:l,txVersion:d,txTipConfig:p,feePayer:m,addSupportMintExt:f}=e,y=this.createTxBuilder(m),[b,g,P]=new yt.default(new z.PublicKey(o.address).toBuffer()).gt(new yt.default(new z.PublicKey(i.address).toBuffer()))?[i,o,new jn.default(1).div(r)]:[o,i,r],k=se.priceToSqrtPriceX64(P,b.decimals,g.decimals),I=[],A=[];f&&(b.programId===Ge.TOKEN_2022_PROGRAM_ID.toBase58()&&A.push(Io(t,new z.PublicKey(b.address)).publicKey),g.programId===Ge.TOKEN_2022_PROGRAM_ID.toBase58()&&A.push(Io(t,new z.PublicKey(g.address)).publicKey),(await this.scope.connection.getMultipleAccountsInfo(A)).forEach((C,L)=>{C&&I.push(A[L])}));let{address:h}=await ke.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:b,mintB:g,ammConfigId:a.id,initialPriceX64:k,extendMintAccount:I}),B=[];if(u){if(!await this.scope.connection.getAccountInfo(u))throw new Error("Dynamic Fee Config not found. Run 03_admin_create_dynamic_fee_config.ts first.");console.log("Dynamic Fee Config",u.toBase58()),B.push({pubkey:u,isSigner:!1,isWritable:!1})}let S=ke.createCustomizablePoolInstruction(t,h.poolId,this.scope.ownerPubKey,a.id,h.mintA,h.mintB,h.mintAVault,h.mintBVault,h.observationId,h.exBitmapAccount,h.mintAProgram,h.mintBProgram,k,c,[...I,...B.map(x=>x.pubkey)],u);return y.addInstruction({instructions:[S]}),y.addCustomComputeBudget(l),y.addTipInstruction(p),y.versionBuild({txVersion:d,extInfo:{address:E(N({},h),{observationId:h.observationId.toBase58(),exBitmapAccount:h.exBitmapAccount.toBase58(),programId:t.toString(),id:h.poolId.toString(),mintA:b,mintB:g,openTime:"0",vault:{A:h.mintAVault.toString(),B:h.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:N({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:h.poolId.toString(),mintA:b,mintB:g,feeRate:a.tradeFeeRate,openTime:"0",programId:t.toString(),price:P.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:c,feeOn:c===0?"Both":c===1?"TokenA":"TokenB",hasDynamicFee:!!u,tips:[],launchMigratePool:!1},gr)}})}async createPermissionedPool(e){var C;let{programId:t,owner:n=((C=this.scope.owner)==null?void 0:C.publicKey)||z.PublicKey.default,mint1:o,mint2:i,initialPrice:r,ammConfig:a,collectFeeOn:c=0,dynamicFeeConfig:u,computeBudgetConfig:l,txVersion:d,txTipConfig:p,feePayer:m,addSupportMintExt:f}=e,y=this.createTxBuilder(m),[b,g,P]=new yt.default(new z.PublicKey(o.address).toBuffer()).gt(new yt.default(new z.PublicKey(i.address).toBuffer()))?[i,o,new jn.default(1).div(r)]:[o,i,r],k=se.priceToSqrtPriceX64(P,b.decimals,g.decimals),I=[],A=[];f&&(b.programId===Ge.TOKEN_2022_PROGRAM_ID.toBase58()&&A.push(Io(t,new z.PublicKey(b.address)).publicKey),g.programId===Ge.TOKEN_2022_PROGRAM_ID.toBase58()&&A.push(Io(t,new z.PublicKey(g.address)).publicKey),(await this.scope.connection.getMultipleAccountsInfo(A)).forEach((O,R)=>{O&&I.push(A[R])}));let h=m!=null?m:this.scope.ownerPubKey,B=Math.floor(Math.random()*Math.pow(2,16))+1,{address:S}=await ke.createPermissionedPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:b,mintB:g,ammConfigId:a.id,initialPriceX64:k,extendMintAccount:I,payer:h,seedIndex:B}),K=[];if(u){if(!await this.scope.connection.getAccountInfo(u))throw new Error("Dynamic Fee Config not found. Run 03_admin_create_dynamic_fee_config.ts first.");console.log("Dynamic Fee Config",u.toBase58()),K.push({pubkey:u,isSigner:!1,isWritable:!1})}let x=ke.createPermissionedPoolInstruction(t,h,h,S.permission,a.id,S.poolId,S.mintA,S.mintB,S.mintAVault,S.mintBVault,S.observationId,S.exBitmapAccount,S.mintAProgram,S.mintBProgram,k,c,B,[...I,...K.map(L=>L.pubkey)],u);return y.addInstruction({instructions:[x]}),y.addCustomComputeBudget(l),y.addTipInstruction(p),y.versionBuild({txVersion:d,extInfo:{address:E(N({},S),{observationId:S.observationId.toBase58(),exBitmapAccount:S.exBitmapAccount.toBase58(),programId:t.toString(),id:S.poolId.toString(),mintA:b,mintB:g,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:N({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:S.poolId.toString(),mintA:b,mintB:g,feeRate:a.tradeFeeRate,openTime:"0",programId:t.toString(),price:P.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:c,feeOn:c===0?"Both":c===1?"TokenA":"TokenB",hasDynamicFee:!!u,tips:[],launchMigratePool:!1},gr)}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,base:r=null,baseAmount:a,otherAmountMax:c,liquidity:u=new yt.default(0),nft2022:l,associatedOnly:d=!0,checkCreateATAOwner:p=!1,withMetadata:m="create",getEphemeralSigners:f,computeBudgetConfig:y,txTipConfig:b,txVersion:g,feePayer:P}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let k=this.createTxBuilder(P),I=null,A=null,h=n.useSOLBalance&&e.mintA.address===ee.toString(),B=n.useSOLBalance&&e.mintB.address===ee.toString(),[S,K]=r==="MintA"?[a,c]:[c,a],{account:x,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new z.PublicKey(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||S.isZero()?{payer:this.scope.ownerPubKey,amount:S}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:d,checkCreateATAOwner:p});x&&(I=x),k.addInstruction(C||{});let{account:L,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new z.PublicKey(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:B||K.isZero()?{payer:this.scope.ownerPubKey,amount:K}:void 0,skipCloseAccount:!B,notUseTokenAccount:B,associatedOnly:B?!1:d,checkCreateATAOwner:p});L&&(A=L),k.addInstruction(O||{}),(!I||!A)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",{ownerTokenAccountA:I==null?void 0:I.toBase58(),ownerTokenAccountB:A==null?void 0:A.toBase58()});let R=t!=null?t:await this.getClmmPoolKeys(e.id.toString()),F=await ke.openPositionFromBaseInstructions({poolInfo:e,poolKeys:R,ownerInfo:E(N({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:I,tokenAccountB:A}),tickLower:o,tickUpper:i,base:r,baseAmount:a,otherAmountMax:c,liquidity:u,withMetadata:m,getEphemeralSigners:f,nft2022:l});return k.addInstruction(F),k.addCustomComputeBudget(y),k.addTipInstruction(b),k.versionBuild({txVersion:g,extInfo:N({},F.address)})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:o,amountMaxB:i,base:r=null,tickLower:a,tickUpper:c,liquidity:u,associatedOnly:l=!0,checkCreateATAOwner:d=!1,withMetadata:p="create",txVersion:m,computeBudgetConfig:f,txTipConfig:y,getEphemeralSigners:b,nft2022:g,feePayer:P}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let k=this.createTxBuilder(P),I=null,A=null,h=n.useSOLBalance&&e.mintA.address===ee.toBase58(),B=n.useSOLBalance&&e.mintB.address===ee.toBase58(),{account:S,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new z.PublicKey(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:l,checkCreateATAOwner:d});S&&(I=S),k.addInstruction(K||{});let{account:x,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new z.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:l,checkCreateATAOwner:d});x&&(A=x),k.addInstruction(C||{}),(I===void 0||A===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let L=t||await this.getClmmPoolKeys(e.id.toString()),O=await ke.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:L,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:I,tokenAccountB:A},tickLower:a,tickUpper:c,liquidity:u,amountMaxA:o,amountMaxB:i,base:r,withMetadata:p,getEphemeralSigners:b,nft2022:g});return k.addInstruction(O),k.addCustomComputeBudget(f),k.addTipInstruction(y),k.versionBuild({txVersion:m,extInfo:{address:O.address}})}async increasePositionFromLiquidity(e){var x;let{poolInfo:t,poolKeys:n,ownerPosition:o,amountMaxA:i,amountMaxB:r,liquidity:a,ownerInfo:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,computeBudgetConfig:d,txTipConfig:p,txVersion:m,feePayer:f}=e,y=this.createTxBuilder(f),b,g,P=c.useSOLBalance&&t.mintA.address===ee.toString(),k=c.useSOLBalance&&t.mintB.address===ee.toString(),{account:I,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new z.PublicKey(t.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:P||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!P,associatedOnly:P?!1:u,checkCreateATAOwner:l});I&&(b=I),y.addInstruction(A||{});let{account:h,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new z.PublicKey(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:k||r.isZero()?{payer:this.scope.ownerPubKey,amount:r}:void 0,notUseTokenAccount:k,skipCloseAccount:!k,associatedOnly:k?!1:u,checkCreateATAOwner:l});h&&(g=h),y.addInstruction(B||{}),!b&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=n!=null?n:await this.getClmmPoolKeys(t.id),K=ke.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:S,ownerPosition:o,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g},liquidity:a,amountMaxA:i,amountMaxB:r,nft2022:(x=await this.scope.connection.getAccountInfo(o.nftMint))==null?void 0:x.owner.equals(Ge.TOKEN_2022_PROGRAM_ID)});return y.addInstruction(K),y.addCustomComputeBudget(d),y.addTipInstruction(p),y.versionBuild({txVersion:m,extInfo:{address:K.address}})}async increasePositionFromBase(e){var K;let{poolInfo:t,ownerPosition:n,base:o,baseAmount:i,otherAmountMax:r,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txTipConfig:d,txVersion:p,feePayer:m}=e,f=this.createTxBuilder(m),y,b,g=a.useSOLBalance&&t.mintA.address===ee.toString(),P=a.useSOLBalance&&t.mintB.address===ee.toString(),{account:k,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new z.PublicKey(t.mintA.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,createInfo:g||(o==="MintA"?i:r).isZero()?{payer:this.scope.ownerPubKey,amount:o==="MintA"?i:r}:void 0,skipCloseAccount:!g,associatedOnly:g?!1:c,checkCreateATAOwner:u});k&&(y=k),f.addInstruction(I||{});let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new z.PublicKey(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:P||(o==="MintA"?r:i).isZero()?{payer:this.scope.ownerPubKey,amount:o==="MintA"?r:i}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:c,checkCreateATAOwner:u});A&&(b=A),f.addInstruction(h||{}),!y&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let B=await this.getClmmPoolKeys(t.id),S=ke.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:B,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:y,tokenAccountB:b},base:o,baseAmount:i,otherAmountMax:r,nft2022:(K=await this.scope.connection.getAccountInfo(n.nftMint))==null?void 0:K.owner.equals(Ge.TOKEN_2022_PROGRAM_ID)});return f.addInstruction(S),f.addCustomComputeBudget(l),f.addTipInstruction(d),f.versionBuild({txVersion:p,extInfo:{address:S.address}})}async decreaseLiquidity(e){var O;let{poolInfo:t,poolKeys:n,ownerPosition:o,ownerInfo:i,amountMinA:r,amountMinB:a,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,computeBudgetConfig:d,txTipConfig:p,txVersion:m,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===ee.toString(),g=i.useSOLBalance&&t.mintB.address===ee.toString(),P,k,{account:I,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new z.PublicKey(t.mintA.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:l});P=I,A&&y.addInstruction(A);let{account:h,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new z.PublicKey(t.mintB.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!g,associatedOnly:g?!1:u,checkCreateATAOwner:l});k=h,B&&y.addInstruction(B);let S=n!=null?n:await this.getClmmPoolKeys(t.id),K=[];for(let R of S.rewardInfos){let F=i.useSOLBalance&&R.mint.address===ee.toString(),W;if(R.mint.address===t.mintA.address)W=P;else if(R.mint.address===t.mintB.address)W=k;else{let{account:D,instructionParams:X}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new z.PublicKey(R.mint.programId),mint:new z.PublicKey(R.mint.address),notUseTokenAccount:F,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!F,associatedOnly:F?!1:u,checkCreateATAOwner:l});W=D,X&&y.addInstruction(X)}K.push(W)}!P&&!k&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let x=(O=await this.scope.connection.getAccountInfo(o.nftMint))==null?void 0:O.owner.equals(Ge.TOKEN_2022_PROGRAM_ID),C=await ke.decreaseLiquidityInstructions({poolInfo:t,poolKeys:S,ownerPosition:o,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:P,tokenAccountB:k,rewardAccounts:K},liquidity:c,amountMinA:r,amountMinB:a,nft2022:x});y.addInstruction({instructions:C.instructions,instructionTypes:[Y.ClmmDecreasePosition]});let L=N({},C.address);if(i.closePosition){let R=await ke.closePositionInstructions({poolInfo:t,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:o,nft2022:x});y.addInstruction({endInstructions:R.instructions,endInstructionTypes:R.instructionTypes}),L=N(N({},L),R.address)}return y.addCustomComputeBudget(d),y.addTipInstruction(p),y.versionBuild({txVersion:m,extInfo:{address:L}})}async lockPosition(e){var f;let{programId:t=qo,authProgramId:n=yi,poolProgramId:o=_n,ownerPosition:i,payer:r,computeBudgetConfig:a,txTipConfig:c,txVersion:u,getEphemeralSigners:l,feePayer:d}=e,p=this.createTxBuilder(d),m=await ke.makeLockPositions({programId:t,authProgramId:n,poolProgramId:o,wallet:this.scope.ownerPubKey,payer:r!=null?r:this.scope.ownerPubKey,nftMint:i.nftMint,getEphemeralSigners:l,nft2022:(f=await this.scope.connection.getAccountInfo(i.nftMint))==null?void 0:f.owner.equals(Ge.TOKEN_2022_PROGRAM_ID)});return p.addInstruction(m),p.addCustomComputeBudget(a),p.addTipInstruction(c),p.versionBuild({txVersion:u,extInfo:m.address})}async harvestLockPosition(e){let{programId:t=qo,authProgramId:n=yi,clmmProgram:o=_n,poolKeys:i,lockData:r,ownerInfo:a={useSOLBalance:!0},associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txTipConfig:d,txVersion:p,feePayer:m}=e,f=i||await this.getClmmPoolKeys(r.poolId.toString()),y=this.createTxBuilder(m),b=await this.scope.connection.getAccountInfo(r.positionId);b||this.logger.logWithError("position not found",r.positionId);let g=Pr.decode(b.data),P=a.useSOLBalance&&f.mintA.address===ee.toString(),k=a.useSOLBalance&&f.mintB.address===ee.toString(),I,A,{account:h,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f.mintA.programId,mint:new z.PublicKey(f.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!P,associatedOnly:P?!1:c,checkCreateATAOwner:u});I=h,B&&y.addInstruction(B);let{account:S,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f.mintB.programId,mint:new z.PublicKey(f.mintB.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!k,associatedOnly:k?!1:c,checkCreateATAOwner:u});A=S,K&&y.addInstruction(K);let x={},C=[];for(let oe of f.rewardInfos){let ue=a.useSOLBalance&&oe.mint.address===ee.toString(),te=x[oe.mint.address];if(!te){let{account:ge,instructionParams:ce}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new z.PublicKey(oe.mint.programId),mint:new z.PublicKey(oe.mint.address),notUseTokenAccount:ue,owner:this.scope.ownerPubKey,skipCloseAccount:!ue,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:ue?!1:c});te=ge,ce&&y.addInstruction(ce)}x[oe.mint.address]=te,C.push(te)}let L=Yo(t,r.lockNftMint).publicKey,O=ne(this.scope.ownerPubKey,r.lockNftMint,Ge.TOKEN_PROGRAM_ID).publicKey,R=he.getTickArrayStartIndex(g.tickLower,f.config.tickSpacing),F=he.getTickArrayStartIndex(g.tickUpper,f.config.tickSpacing),{publicKey:W}=Ee(new z.PublicKey(f.programId),r.poolId,R),{publicKey:D}=Ee(new z.PublicKey(f.programId),r.poolId,F),{publicKey:X}=hn(new z.PublicKey(f.programId),r.poolId,g.tickLower,g.tickUpper),$=[];for(let oe=0;oe<f.rewardInfos.length;oe++){let ue=f.rewardInfos[oe].mint.address,te=x[ue];te&&$.push({poolRewardVault:new z.PublicKey(f.rewardInfos[oe].vault),ownerRewardVault:te,rewardMint:new z.PublicKey(ue)})}let H=await ke.harvestLockPositionInstructionV2({programId:t,auth:n,lockPositionId:L,clmmProgram:o,lockOwner:this.scope.ownerPubKey,lockNftMint:r.lockNftMint,lockNftAccount:O,positionNftAccount:r.nftAccount,positionId:r.positionId,poolId:r.poolId,protocolPosition:X,vaultA:new z.PublicKey(f.vault.A),vaultB:new z.PublicKey(f.vault.B),tickArrayLower:W,tickArrayUpper:D,userVaultA:I,userVaultB:A,mintA:new z.PublicKey(f.mintA.address),mintB:new z.PublicKey(f.mintB.address),rewardAccounts:$,exTickArrayBitmap:Ze(o,r.poolId).publicKey});return y.addInstruction({instructions:[H],instructionTypes:[Y.ClmmHarvestLockPosition]}),y.addCustomComputeBudget(l),y.addTipInstruction(d),y.versionBuild({txVersion:p})}async closePosition({poolInfo:e,poolKeys:t,ownerPosition:n,txVersion:o,computeBudgetConfig:i,txTipConfig:r,feePayer:a}){var d;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let c=this.createTxBuilder(a),u=t!=null?t:await this.getClmmPoolKeys(e.id),l=ke.closePositionInstructions({poolInfo:e,poolKeys:u,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n,nft2022:(d=await this.scope.connection.getAccountInfo(n.nftMint))==null?void 0:d.owner.equals(Ge.TOKEN_2022_PROGRAM_ID)});return c.addCustomComputeBudget(i),c.addTipInstruction(r),c.addInstruction(l).versionBuild({txVersion:o,extInfo:{address:l.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1,computeBudgetConfig:r,txVersion:a,feePayer:c}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(c),l=t.useSOLBalance&&n.mint.address.toString()===ee.toString(),d=n.perSecond.mul(n.endTime-n.openTime),{account:p,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new z.PublicKey(n.mint.programId),mint:new z.PublicKey(n.mint.address),notUseTokenAccount:!!l,skipCloseAccount:!l,owner:this.scope.ownerPubKey,createInfo:l?{payer:t.feePayer||this.scope.ownerPubKey,amount:new yt.default(new jn.default(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:l?!1:o,checkCreateATAOwner:i});m&&u.addInstruction(m),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),y=ke.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new z.PublicKey(n.mint.programId),mint:new z.PublicKey(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:Bo(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(r),u.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:c,txVersion:u,feePayer:l}){for(let m of o)m.endTime<=m.openTime&&this.logAndCreateError("reward time error","rewardInfo",m);let d=this.createTxBuilder(l),p={};for(let m of o){let f=n.useSOLBalance&&m.mint.address===ee.toString(),y=m.perSecond.mul(m.endTime-m.openTime),{account:b,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new z.PublicKey(m.mint.programId),mint:new z.PublicKey(m.mint.address),notUseTokenAccount:!!f,skipCloseAccount:!f,owner:this.scope.ownerPubKey,createInfo:f?{payer:n.feePayer||this.scope.ownerPubKey,amount:new yt.default(new jn.default(y.toFixed(0)).gte(y)?y.toFixed(0):y.add(1).toFixed(0))}:void 0,associatedOnly:f?!1:i,checkCreateATAOwner:r});g&&d.addInstruction(g),b||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let P=t!=null?t:await this.getClmmPoolKeys(e.id),k=ke.initRewardInstructions({poolInfo:e,poolKeys:P,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:b},rewardInfo:{programId:new z.PublicKey(m.mint.programId),mint:new z.PublicKey(m.mint.address),openTime:m.openTime,endTime:m.endTime,emissionsPerSecondX64:Bo(m.perSecond)}});p=N(N({},p),k.address),d.addInstruction(k)}return d.addCustomComputeBudget(a),d.addTipInstruction(c),d.versionBuild({txVersion:u,extInfo:{address:p}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1,computeBudgetConfig:r,txTipConfig:a,txVersion:c,feePayer:u}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let l=this.createTxBuilder(u),d=t.useSOLBalance&&n.mint.equals(ee),{account:p,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:d,owner:this.scope.ownerPubKey,createInfo:d?{payer:t.feePayer||this.scope.ownerPubKey,amount:new yt.default(new jn.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:d?!1:o,checkCreateATAOwner:i});m&&l.addInstruction(m),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),y=ke.setRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:Bo(n.perSecond)}});return l.addInstruction(y),l.addCustomComputeBudget(r),l.addTipInstruction(a),l.versionBuild({txVersion:c,extInfo:{address:y.address}})}async setRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:o,associatedOnly:i=!0,checkCreateATAOwner:r=!1,computeBudgetConfig:a,txTipConfig:c,txVersion:u,feePayer:l}){let d=this.createTxBuilder(l),p={};for(let m of o){m.endTime<=m.openTime&&this.logAndCreateError("reward time error","rewardInfo",m);let f=n.useSOLBalance&&m.mint.address===ee.toString(),{account:y,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new z.PublicKey(m.mint.programId),mint:new z.PublicKey(m.mint.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:n.feePayer||this.scope.ownerPubKey,amount:new yt.default(new jn.default(m.perSecond.mul(m.endTime-m.openTime).toFixed(0)).gte(m.perSecond.mul(m.endTime-m.openTime))?m.perSecond.mul(m.endTime-m.openTime).toFixed(0):m.perSecond.mul(m.endTime-m.openTime).add(1).toFixed(0))}:void 0,associatedOnly:f?!1:i,checkCreateATAOwner:r});b&&d.addInstruction(b),y||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let g=t!=null?t:await this.getClmmPoolKeys(e.id),P=ke.setRewardInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:y},rewardInfo:{mint:new z.PublicKey(m.mint.address),openTime:m.openTime,endTime:m.endTime,emissionsPerSecondX64:Bo(m.perSecond)}});d.addInstruction(P),p=N(N({},p),P.address)}return d.addCustomComputeBudget(a),d.addTipInstruction(c),d.versionBuild({txVersion:u,extInfo:{address:p}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1,computeBudgetConfig:r,txTipConfig:a,txVersion:c,feePayer:u}){let l=e.rewardDefaultInfos.find(g=>g.mint.address===n.toString());l||this.logAndCreateError("reward mint error","not found reward mint",n);let d=this.createTxBuilder(u),p=t.useSOLBalance&&n.equals(ee),{account:m,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new z.PublicKey(l.mint.programId),mint:n,notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:o,checkCreateATAOwner:i});f&&d.addInstruction(f),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),b=ke.collectRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:n});return d.addInstruction(b),d.addCustomComputeBudget(r),d.addTipInstruction(a),d.versionBuild({txVersion:c,extInfo:{address:b.address}})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1,computeBudgetConfig:r,txTipConfig:a,feePayer:c}){let u=this.createTxBuilder(c),l={};for(let d of n){let p=e.rewardDefaultInfos.find(P=>P.mint.address===d.toString());if(!p){this.logAndCreateError("reward mint error","not found reward mint",d);continue}let m=t.useSOLBalance&&d.equals(ee),{account:f,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new z.PublicKey(p.mint.programId),mint:d,notUseTokenAccount:m,owner:this.scope.ownerPubKey,skipCloseAccount:!m,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:m?!1:o,checkCreateATAOwner:i});f||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),y&&u.addInstruction(y);let b=await this.getClmmPoolKeys(e.id),g=ke.collectRewardInstructions({poolInfo:e,poolKeys:b,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:f},rewardMint:d});u.addInstruction(g),l=N(N({},l),g.address)}return u.addCustomComputeBudget(r),u.addTipInstruction(a),u.build({address:l})}async openLimitOrder({poolInfo:e,baseIn:t=!0,orderTick:n,amount:o,noneIndex:i=0,tickArrayBitmap:r,ownerInfo:a={useSOLBalance:!0},associatedOnly:c=!0,feePayer:u,computeBudgetConfig:l,txTipConfig:d,txVersion:p}){let m=new z.PublicKey(e.id),f=new z.PublicKey(e.programId),y=t?new z.PublicKey(e.mintA.address):new z.PublicKey(e.mintB.address),b=t?new z.PublicKey(e.mintB.address):new z.PublicKey(e.mintA.address),g=new z.PublicKey(e[t?"mintA":"mintB"].programId),P=new z.PublicKey(e[t?"mintB":"mintA"].programId),k=y.equals(ee),I=b.equals(ee),A=a.useSOLBalance&&k,h=a.useSOLBalance&&I,B=this.createTxBuilder(),S=A||!c?void 0:ne(this.scope.ownerPubKey,y,g).publicKey;if(S)B.addInstruction({instructions:[(0,Ge.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,S,this.scope.ownerPubKey,y,g)]});else{let{account:X,instructionParams:$}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:g,mint:y,notUseTokenAccount:A,owner:this.scope.ownerPubKey,skipCloseAccount:!A,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:o},associatedOnly:!A});S=X,$&&B.addInstruction($)}let K=h||!c?void 0:ne(this.scope.ownerPubKey,b,P).publicKey;if(K)B.addInstruction({instructions:[(0,Ge.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,K,this.scope.ownerPubKey,b,P)]});else{let{account:X,instructionParams:$}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:P,mint:b,notUseTokenAccount:h,owner:this.scope.ownerPubKey,skipCloseAccount:!h,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:o},associatedOnly:!h});K=X,$&&B.addInstruction($)}let x=ju(f,this.scope.ownerPubKey,i).publicKey,C=await this.scope.connection.getAccountInfo(x),L=C?Du.decode(C.data).orderNonce:new yt.default(0),O=Zu(f,u||this.scope.ownerPubKey,x,L).publicKey,R=he.getTickArrayStartIndex(n,e.config.tickSpacing),F=Ee(f,m,R).publicKey,W=ln(f,m,new z.PublicKey(e[t?"mintA":"mintB"].address)).publicKey,D=ln(f,m,new z.PublicKey(e[t?"mintB":"mintA"].address)).publicKey;return B.addInstruction({instructions:[ke.openLimitOrderInstruction(f,u||this.scope.ownerPubKey,m,F,x,O,S,K,W,D,y,b,g,i,t,n,o,r)]}),B.addCustomComputeBudget(l),B.addTipInstruction(d),B.versionBuild({txVersion:p,extInfo:{limitOrder:O}})}async increaseLimitOrder({poolInfo:e,limitOrder:t,amount:n,ownerInfo:o={useSOLBalance:!0},associatedOnly:i=!0,feePayer:r,computeBudgetConfig:a,txTipConfig:c,txVersion:u}){let l=new z.PublicKey(e.id),d=new z.PublicKey(e.programId),p=await this.scope.connection.getAccountInfo(t);p||this.logAndCreateError(`limit order ${t.toBase58()} not exist`);let m=ho.decode(p.data),f=m.zeroForOne?new z.PublicKey(e.mintA.address):new z.PublicKey(e.mintB.address),y=new z.PublicKey(e[m.zeroForOne?"mintA":"mintB"].programId),b=f.equals(ee),g=o.useSOLBalance&&b,P=this.createTxBuilder(),k=g||!i?void 0:ne(this.scope.ownerPubKey,f,y).publicKey;if(k)P.addInstruction({instructions:[(0,Ge.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,k,this.scope.ownerPubKey,f,y)]});else{let{account:B,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y,mint:f,notUseTokenAccount:g,owner:this.scope.ownerPubKey,skipCloseAccount:!g,createInfo:{payer:o.feePayer||this.scope.ownerPubKey,amount:n},associatedOnly:!g});k=B,S&&P.addInstruction(S)}let I=ln(d,l,new z.PublicKey(e[m.zeroForOne?"mintA":"mintB"].address)).publicKey,A=he.getTickArrayStartIndex(m.tick,e.config.tickSpacing),h=Ee(d,l,A).publicKey;return P.addInstruction({instructions:[ke.increaseLimitOrderInstruction(d,r||this.scope.ownerPubKey,m.poolId,h,t,k,I,f,y,n)]}),P.addCustomComputeBudget(a),P.addTipInstruction(c),P.versionBuild({txVersion:u})}async decreaseLimitOrder({poolInfo:e,limitOrder:t,limitOrderInfo:n,amount:o,slippage:i=1e3,tickArrayBitmap:r,ownerInfo:a={useSOLBalance:!0},associatedOnly:c=!0,feePayer:u,computeBudgetConfig:l,txTipConfig:d,txVersion:p,forerunCreate:m}){let f=new z.PublicKey(e.id),y=new z.PublicKey(e.programId),b=n;if(!b){let X=await this.scope.connection.getAccountInfo(t);X||this.logAndCreateError(`limit order ${t.toBase58()} not exist`),b=ho.decode(X.data)}let g=o.muln(1e4-i).divn(1e4),P=ro.getUnFilledAmount({orderInfo:b});(P.isZero()||o.gt(P))&&this.logAndCreateError(`amount should be less than unfulfilled amount: ${P.toString()}, amount: ${o.toString()}`);let[k,I]=b.zeroForOne?[new z.PublicKey(e.mintA.address),new z.PublicKey(e.mintB.address)]:[new z.PublicKey(e.mintB.address),new z.PublicKey(e.mintA.address)],[A,h]=b.zeroForOne?[new z.PublicKey(e.mintA.programId),new z.PublicKey(e.mintB.programId)]:[new z.PublicKey(e.mintB.programId),new z.PublicKey(e.mintA.programId)],[B,S]=[k.equals(ee),I.equals(ee)],[K,x]=[a.useSOLBalance&&B,a.useSOLBalance&&S],C=this.createTxBuilder(),L=K||!c?void 0:ne(this.scope.ownerPubKey,k,A).publicKey,O=x||!c?void 0:ne(this.scope.ownerPubKey,I,h).publicKey;if(L)C.addInstruction({instructions:[(0,Ge.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,L,this.scope.ownerPubKey,k,A)]});else{let{account:X,instructionParams:$}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:A,mint:k,notUseTokenAccount:K,owner:this.scope.ownerPubKey,skipCloseAccount:!K,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:!K});L=X,$&&C.addInstruction($)}if(O)C.addInstruction({instructions:[(0,Ge.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,O,this.scope.ownerPubKey,I,h)]});else{let{account:X,instructionParams:$}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:h,mint:I,notUseTokenAccount:x,owner:this.scope.ownerPubKey,skipCloseAccount:!x,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:!x});O=X,$&&C.addInstruction($)}let[R,F]=[ln(y,f,k).publicKey,ln(y,f,I).publicKey],W=he.getTickArrayStartIndex(b.tick,e.config.tickSpacing),D=Ee(y,f,W).publicKey;return C.addInstruction({instructions:[ke.decreaseLimitOrderInstruction(y,u||this.scope.ownerPubKey,f,D,t,L,O,R,F,k,I,o,g,r)]}),C.addCustomComputeBudget(l),C.addTipInstruction(d),C.versionBuild({txVersion:p,extInfo:{forerunCreate:m}})}async closeLimitOrder({programId:e=_n,limitOrder:t,autoWithdraw:n=!0,tickArrayBitmap:o,slippage:i=0,feePayer:r,computeBudgetConfig:a,txTipConfig:c,txVersion:u}){let l=await this.scope.connection.getAccountInfo(t);l||this.logAndCreateError(`limit order ${t.toBase58()} not exist`);let d=ho.decode(l.data),p=ro.getUnFilledAmount({orderInfo:d});!n&&!p.isZero()&&this.logAndCreateError(`unfulfilled amount should be 0, (${p.toString()} remaining), please withdraw first or set autoWithdraw: true`);let m=this.createTxBuilder(),f=(await this.scope.api.fetchPoolById({ids:d.poolId.toBase58()}))[0];f||(f=(await this.getSimplePoolInfo(d.poolId)).poolInfo);let y=await At.fetchTickArrayInfo({connection:this.scope.connection,programId:e,poolId:d.poolId,tick:d.tick,tickSpacing:f.config.tickSpacing}),b=ro.settleFilledOrder({orderInfo:d,tickInfo:y.ticks.find(g=>g.tick===d.tick)});if(p.isZero()){if(!b.isZero()){let g=await this.settleLimitOrder({limitOrder:t});m.addInstruction(N({},g.builder.AllTxData))}}else{let{builder:g}=await this.decreaseLimitOrder({poolInfo:f,limitOrder:t,limitOrderInfo:d,amount:p,tickArrayBitmap:o,slippage:i,txVersion:0});m.addInstruction({instructions:g.allInstructions})}return m.addInstruction({instructions:[ke.closeLimitOrderInstruction(e,r||this.scope.ownerPubKey,this.scope.ownerPubKey,t)]}),m.addCustomComputeBudget(a),m.addTipInstruction(c),m.versionBuild({txVersion:u})}async closeAllLimitOrder({programId:e=_n,limitOrders:t,autoWithdraw:n=!0,slippage:o=1e4,feePayer:i,computeBudgetConfig:r,txVersion:a}){let c=this.createTxBuilder(),l=(await Rt(this.scope.connection,t)).map((P,k)=>P?E(N({},ho.decode(P.data)),{pda:t[k]}):null),d=l.filter(Boolean),p=d.map(P=>P.poolId.toBase58()),m=(await this.scope.api.fetchPoolById({ids:p.join(",")})).filter(Boolean),f={};m.forEach(P=>f[P.id]=P);let y=await At.fetchMultipleTickArrayInfo({connection:this.scope.connection,tickInfoList:d.map(P=>({programId:e,poolId:P.poolId,tick:P.tick,tickSpacing:f[P.poolId.toString()].config.tickSpacing}))}),b={};y.forEach((P,k)=>{!P||(b[d[k].pda.toBase58()]=P)});let g=0;for(let P of t){let k=l[g];if(!k){g++;continue}let I=ro.getUnFilledAmount({orderInfo:k});!n&&!I.isZero()&&this.logAndCreateError(`${P.toBase58()} order unfulfilled amount should be 0 (${I.toString()} remaining), please withdraw first or set autoWithdraw: true`);let A=f[k.poolId.toBase58()],h=b[P.toBase58()],B=ro.settleFilledOrder({orderInfo:k,tickInfo:h.ticks.find(S=>S.tick===k.tick)});if(I.isZero()){if(!B.isZero()){let S=await this.settleLimitOrder({limitOrder:P,forerunCreate:!0});c.addInstruction(N({},S.builder.AllTxData))}}else{let{builder:S}=await this.decreaseLimitOrder({poolInfo:A,limitOrder:P,limitOrderInfo:k,amount:I,slippage:o,txVersion:0,forerunCreate:!0});c.addInstruction({instructions:S.allInstructions})}c.addInstruction({instructions:[ke.closeLimitOrderInstruction(e,i||this.scope.ownerPubKey,this.scope.ownerPubKey,P)]}),g++}return a===0?c.sizeCheckBuildV0({computeBudgetConfig:r}):c.sizeCheckBuild({computeBudgetConfig:r})}async settleLimitOrder({limitOrder:e,feePayer:t,ownerInfo:n={useSOLBalance:!0},associatedOnly:o=!0,computeBudgetConfig:i,txTipConfig:r,txVersion:a,forerunCreate:c}){let u=await this.scope.connection.getAccountInfo(e);u||this.logAndCreateError(`limit order ${e.toBase58()} not exist`);let l=ho.decode(u.data),d=(await this.scope.api.fetchPoolById({ids:l.poolId.toBase58()}))[0];d||(d=(await this.getSimplePoolInfo(l.poolId)).poolInfo);let p=l.zeroForOne?d.mintB:d.mintA,[m,f]=[new z.PublicKey(p.address),new z.PublicKey(p.programId)],y=new z.PublicKey(d.programId),b=this.createTxBuilder(),g=m.equals(ee),P=n.useSOLBalance&&g,k=P||!o?void 0:ne(this.scope.ownerPubKey,m,f).publicKey;if(k)b.addInstruction({instructions:[(0,Ge.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,k,this.scope.ownerPubKey,m,f)]});else{let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f,mint:m,notUseTokenAccount:P,owner:this.scope.ownerPubKey,skipCloseAccount:!P,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:!P});k=A,h&&b.addInstruction(h)}let I=he.getTickArrayStartIndex(l.tick,d.config.tickSpacing);return b.addInstruction({instructions:[ke.settleLimitOrderInstruction(y,t||this.scope.ownerPubKey,l.poolId,Ee(y,l.poolId,I).publicKey,e,k,ln(y,l.poolId,m).publicKey,m,f)]}),b.addCustomComputeBudget(i),b.addTipInstruction(r),b.versionBuild({txVersion:a,extInfo:{forerunCreate:c}})}async settleAllLimitOrder({limitOrders:e,feePayer:t,ownerInfo:n={useSOLBalance:!0},associatedOnly:o=!0,computeBudgetConfig:i,txVersion:r}){let a=await Rt(this.scope.connection,e),c=[],u=a.map((m,f)=>{if(!m)return;let y=ho.decode(m.data);return c.push(y.poolId.toString()),E(N({},y),{pda:e[f]})}),l=await this.scope.api.fetchPoolById({ids:c.join(",")});l.filter(Boolean).length||(l=(await Promise.all(c.map(f=>this.getSimplePoolInfo(f)))).map(f=>f.poolInfo));let d=this.createTxBuilder(),p={};for(let m of u){if(!m)continue;let f=l.find(B=>B.id===m.poolId.toBase58());if(!f)continue;let y=new z.PublicKey(f.programId),b=new z.PublicKey(m.zeroForOne?f.mintB.address:f.mintA.address),g=b.equals(ee),P=n.useSOLBalance&&g,k=new z.PublicKey(g?Ge.TOKEN_PROGRAM_ID:(await this.scope.token.getTokenInfo(b)).programId),I=p[b.toBase58()],A=P||!o?void 0:ne(this.scope.ownerPubKey,b,k).publicKey;if(I)A=I;else{if(A)d.addInstruction({instructions:[(0,Ge.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,A,this.scope.ownerPubKey,b,k)]});else{let{account:B,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:k,mint:b,notUseTokenAccount:P,owner:this.scope.ownerPubKey,skipCloseAccount:!P,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:!P});A=B,S&&d.addInstruction(S)}p[b.toBase58()]=A}let h=he.getTickArrayStartIndex(m.tick,f.config.tickSpacing);d.addInstruction({instructions:[ke.settleLimitOrderInstruction(y,t||this.scope.ownerPubKey,m.poolId,Ee(y,m.poolId,h).publicKey,m.pda,A,ln(y,m.poolId,b).publicKey,b,k)]})}return r===0?d.sizeCheckBuildV0({computeBudgetConfig:i}):d.sizeCheckBuild({computeBudgetConfig:i})}async swap({poolInfo:e,poolKeys:t,inputMint:n,amountIn:o,amountOutMin:i,priceLimit:r,observationId:a,ownerInfo:c,remainingAccounts:u,associatedOnly:l=!0,checkCreateATAOwner:d=!1,txVersion:p,computeBudgetConfig:m,txTipConfig:f,feePayer:y}){let b=this.createTxBuilder(y),g=n.toString()===e.mintA.address.toString(),P=c.useSOLBalance&&e.mintA.address.toString()===ee.toBase58(),k=c.useSOLBalance&&e.mintB.address.toString()===ee.toBase58(),I;!r||r.equals(new jn.default(0))?I=g?Nt.add(new yt.default(1)):Mt.sub(new yt.default(1)):I=se.priceToSqrtPriceX64(r,e.mintA.decimals,e.mintB.decimals);let A;if(!A){let{account:S,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new z.PublicKey(e.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,skipCloseAccount:!P,createInfo:P||!g?{payer:c.feePayer||this.scope.ownerPubKey,amount:g?o:0}:void 0,associatedOnly:P?!1:l,checkCreateATAOwner:d});A=S,K&&b.addInstruction(K)}let h;if(!h){let{account:S,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new z.PublicKey(e.mintB.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,skipCloseAccount:!k,createInfo:k||g?{payer:c.feePayer||this.scope.ownerPubKey,amount:g?0:o}:void 0,associatedOnly:k?!1:l,checkCreateATAOwner:d});h=S,K&&b.addInstruction(K)}(!A||!h)&&this.logAndCreateError("user do not have token account",{tokenA:e.mintA.address,tokenB:e.mintB.address,ownerTokenAccountA:A,ownerTokenAccountB:h,mintAUseSOLBalance:P,mintBUseSOLBalance:k,associatedOnly:l});let B=t!=null?t:await this.getClmmPoolKeys(e.id.toString());return b.addInstruction(ke.makeSwapBaseInInstructions({poolInfo:E(N({},e),{id:e.id.toString(),programId:e.programId.toString()}),poolKeys:B,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:A,tokenAccountB:h},inputMint:new z.PublicKey(n),amountIn:o,amountOutMin:i,sqrtPriceLimitX64:Z,remainingAccounts:u})),b.addCustomComputeBudget(m),b.addTipInstruction(f),b.versionBuild({txVersion:p})}async swapBaseOut({poolInfo:e,poolKeys:t,outputMint:n,amountOut:o,amountInMax:i,priceLimit:r,observationId:a,ownerInfo:c,remainingAccounts:u,associatedOnly:l=!0,checkCreateATAOwner:d=!1,txVersion:p,computeBudgetConfig:m,txTipConfig:f,feePayer:y}){let b=this.createTxBuilder(y),g=n.toString()===e.mintB.address.toString(),P=c.useSOLBalance&&e.mintA.address.toString()===ee.toBase58(),k=c.useSOLBalance&&e.mintB.address.toString()===ee.toBase58(),I;!r||r.equals(new jn.default(0))?I=g?Nt.add(new yt.default(1)):Mt.sub(new yt.default(1)):I=se.priceToSqrtPriceX64(r,e.mintA.decimals,e.mintB.decimals);let A;if(!A){let{account:S,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new z.PublicKey(e.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,skipCloseAccount:!P,createInfo:P||!g?{payer:c.feePayer||this.scope.ownerPubKey,amount:g?i:0}:void 0,associatedOnly:P?!1:l,checkCreateATAOwner:d});A=S,K&&b.addInstruction(K)}let h;if(!h){let{account:S,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new z.PublicKey(e.mintB.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,skipCloseAccount:!k,createInfo:k||g?{payer:c.feePayer||this.scope.ownerPubKey,amount:g?0:i}:void 0,associatedOnly:k?!1:l,checkCreateATAOwner:d});h=S,K&&b.addInstruction(K)}(!A||!h)&&this.logAndCreateError("user do not have token account",{tokenA:e.mintA.address,tokenB:e.mintB.address,ownerTokenAccountA:A,ownerTokenAccountB:h,mintAUseSOLBalance:P,mintBUseSOLBalance:k,associatedOnly:l});let B=t!=null?t:await this.getClmmPoolKeys(e.id.toString());return b.addInstruction(ke.makeSwapBaseOutInstructions({poolInfo:E(N({},e),{id:e.id.toString(),programId:e.programId.toString()}),poolKeys:B,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:A,tokenAccountB:h},outputMint:new z.PublicKey(n),amountOut:o,amountInMax:i,sqrtPriceLimitX64:Z,remainingAccounts:u})),b.addCustomComputeBudget(m),b.addTipInstruction(f),b.versionBuild({txVersion:p})}async harvestAllRewards({allPoolInfo:e,allPositions:t,lockInfo:n,ownerInfo:o,associatedOnly:i=!0,checkCreateATAOwner:r=!1,programId:a,txVersion:c,computeBudgetConfig:u,feePayer:l,lockProgram:d=qo,lockAuth:p=yi,clmmProgram:m=_n}){var k,I;let f={};for(let A of this.scope.account.tokenAccountRawInfos)i?ne(this.scope.ownerPubKey,A.accountInfo.mint,a).publicKey.equals(A.pubkey)&&(f[A.accountInfo.mint.toString()]=A.pubkey):f[A.accountInfo.mint.toString()]=A.pubkey;let y=Object.values(t).flat().map(A=>A.nftMint),b=await Ue(this.scope.connection,y.map(A=>({pubkey:A}))),g={};b.forEach(A=>{var h,B;g[A.pubkey.toBase58()]=(B=(h=A==null?void 0:A.accountInfo)==null?void 0:h.owner)!=null?B:null});let P=this.createTxBuilder(l);for(let A of Object.values(e)){if(t[A.id]===void 0||!t[A.id].find(R=>!R.liquidity.isZero()||R.rewardInfos.find(F=>!F.rewardAmountOwed.isZero())))continue;let h=A,B=o.useSOLBalance&&h.mintA.address===ee.toString(),S=o.useSOLBalance&&h.mintB.address===ee.toString(),K=f[h.mintA.address];if(!K)if(B){let{account:R,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:h.mintA.programId,mint:new z.PublicKey(h.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});K=R,F&&P.addInstruction(F)}else{let R=new z.PublicKey(h.mintA.address);K=this.scope.account.getAssociatedTokenAccount(R,new z.PublicKey(h.mintA.programId)),P.addInstruction({instructions:[(0,Ge.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,K,this.scope.ownerPubKey,R,new z.PublicKey(h.mintA.programId))]})}let x=f[h.mintB.address];if(!x)if(S){let{account:R,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:h.mintB.programId,mint:new z.PublicKey(h.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});x=R,F&&P.addInstruction(F)}else{let R=new z.PublicKey(h.mintB.address);x=this.scope.account.getAssociatedTokenAccount(R,new z.PublicKey(h.mintB.programId)),P.addInstruction({instructions:[(0,Ge.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,x,this.scope.ownerPubKey,R,new z.PublicKey(h.mintB.programId))]})}f[h.mintA.address]=K,f[h.mintB.address]=x;let C=[];for(let R of h.rewardDefaultInfos){let F=o.useSOLBalance&&R.mint.address===ee.toString(),W=f[R.mint.address];if(!W){let{account:D,instructionParams:X}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new z.PublicKey(R.mint.programId),mint:new z.PublicKey(R.mint.address),notUseTokenAccount:F,owner:this.scope.ownerPubKey,skipCloseAccount:!F,createInfo:{payer:o.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:F?!1:i});W=D,X&&P.addInstruction(X)}f[R.mint.address]=W,C.push(W)}let L=await this.getClmmPoolKeys(h.id),O=[];for(let R=0;R<L.rewardInfos.length;R++)O.push({poolRewardVault:new z.PublicKey(L.rewardInfos[R].vault),ownerRewardVault:C[R],rewardMint:new z.PublicKey(L.rewardInfos[R].mint.address)});for(let R of t[A.id]){let F=(k=n==null?void 0:n[A.id])==null?void 0:k[R.nftMint.toBase58()];if(F){let W=ne(this.scope.ownerPubKey,F.lockNftMint,Ge.TOKEN_PROGRAM_ID).publicKey,D=he.getTickArrayStartIndex(R.tickLower,L.config.tickSpacing),X=he.getTickArrayStartIndex(R.tickUpper,L.config.tickSpacing),{publicKey:$}=Ee(new z.PublicKey(L.programId),F.poolId,D),{publicKey:H}=Ee(new z.PublicKey(L.programId),F.poolId,X),{publicKey:oe}=hn(new z.PublicKey(L.programId),F.poolId,R.tickLower,R.tickUpper),ue=Yo(d,F.lockNftMint).publicKey,te=ke.harvestLockPositionInstructionV2({programId:d,auth:p,lockPositionId:ue,clmmProgram:m,lockOwner:this.scope.ownerPubKey,lockNftMint:F.lockNftMint,lockNftAccount:W,positionNftAccount:F.nftAccount,positionId:F.positionId,poolId:F.poolId,protocolPosition:oe,vaultA:new z.PublicKey(L.vault.A),vaultB:new z.PublicKey(L.vault.B),tickArrayLower:$,tickArrayUpper:H,userVaultA:K,userVaultB:x,mintA:new z.PublicKey(L.mintA.address),mintB:new z.PublicKey(L.mintB.address),rewardAccounts:O,exTickArrayBitmap:Ze(m,F.poolId).publicKey});P.addInstruction({instructions:[te],instructionTypes:[Y.ClmmHarvestLockPosition],lookupTableAddress:L.lookupTableAccount?[L.lookupTableAccount]:[]})}else{let W=ke.decreaseLiquidityInstructions({poolInfo:h,poolKeys:L,ownerPosition:R,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:K,tokenAccountB:x,rewardAccounts:C},liquidity:new yt.default(0),amountMinA:new yt.default(0),amountMinB:new yt.default(0),nft2022:(I=g[R.nftMint.toBase58()])==null?void 0:I.equals(Ge.TOKEN_2022_PROGRAM_ID)});P.addInstruction(W)}}}return c===0?P.sizeCheckBuildV0({computeBudgetConfig:u}):P.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(wi(e).publicKey);return t?Eu.decode(t.data).whitelistMints.filter(o=>!o.equals(z.PublicKey.default)):[]}async getOwnerPositionInfo({programId:e=_n}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(r=>r.accountInfo.amount.eq(new yt.default(1))).map(r=>mn(new z.PublicKey(e),r.accountInfo.mint).publicKey),o=await this.scope.connection.getMultipleAccountsInfo(n),i=[];return o.forEach(r=>{if(!r)return;let a=Pr.decode(r.data);i.push(a)}),i}async getOwnerLockedPositionInfo({programId:e=qo}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(c=>c.accountInfo.amount.eq(new yt.default(1))).map(c=>Yo(new z.PublicKey(e),c.accountInfo.mint).publicKey),o=await this.scope.connection.getMultipleAccountsInfo(n),i=[];o.forEach(c=>{if(!c)return;let u=Wu.decode(c.data);i.push(u)});let r=await this.scope.connection.getMultipleAccountsInfo(i.map(c=>c.positionId)),a=[];return r.forEach(c=>{if(!c)return;let u=Pr.decode(c.data);a.push(u)}),i.map((c,u)=>({position:a[u],lockInfo:c}))}async getRpcClmmPoolInfo({poolId:e}){return(await this.getRpcClmmPoolInfos({poolIds:[e]}))[String(e)]}async getRpcClmmPoolInfos({poolIds:e,config:t}){let n=await Ue(this.scope.connection,e.map(i=>({pubkey:new z.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=To.decode(r.accountInfo.data),c=se.sqrtPriceX64ToPrice(a.sqrtPriceX64,a.mintDecimalsA,a.mintDecimalsB).toNumber();o[String(e[i])]=E(N({},a),{currentPrice:c,programId:r.accountInfo.owner})}return o}async getComputeClmmPoolInfos({clmmPoolsRpcInfo:e,mintInfos:t}){let n=new Set(Object.keys(e).map(c=>e[c].configId.toBase58())),o=await Ue(this.scope.connection,Array.from(n).map(c=>({pubkey:new z.PublicKey(c)}))),i={};o.forEach(c=>{!c.accountInfo||(i[c.pubkey.toBase58()]=Ya.decode(c.accountInfo.data))});let r=await At.fetchComputeMultipleClmmInfo({connection:this.scope.connection,rpcDataMap:e,poolList:Object.keys(e).map(c=>{var d,p,m,f;let[u,l]=[e[c].mintA.toBase58(),e[c].mintB.toBase58()];return{id:c,programId:e[c].programId.toBase58(),mintA:Bt({address:u,decimals:e[c].mintDecimalsA,programId:t[u].programId.toBase58()||Ge.TOKEN_PROGRAM_ID.toBase58(),extensions:{feeConfig:(d=t[u])!=null&&d.feeConfig?Vn((p=t[u])==null?void 0:p.feeConfig):void 0}}),mintB:Bt({address:l,decimals:e[c].mintDecimalsB,programId:t[l].programId.toBase58()||Ge.TOKEN_PROGRAM_ID.toBase58(),extensions:{feeConfig:(m=t[l])!=null&&m.feeConfig?Vn((f=t[l])==null?void 0:f.feeConfig):void 0}}),price:e[c].currentPrice,config:E(N({},i[e[c].configId.toBase58()]),{id:e[c].configId.toBase58(),fundFeeRate:0,description:"",defaultRange:0,defaultRangePoint:[]})}})}),a=await At.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(l=>!l.mint.equals(z.PublicKey.default)).map(l=>l.mint.toBase58())]),o=await yo({connection:this.scope.connection,mints:Array.from(n).map(l=>new z.PublicKey(l))}),{computeClmmPoolInfo:i,computePoolTickData:r}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:{[e]:t},mintInfos:o}),a=await Ue(this.scope.connection,[{pubkey:t.vaultA},{pubkey:t.vaultB}]),c=ic(i[e],o);if(!a[0].accountInfo||!a[1].accountInfo)throw new Error("pool vault data not found");c.mintAmountA=Number(kn.decode(a[0].accountInfo.data).amount.toString()),c.mintAmountB=Number(kn.decode(a[1].accountInfo.data).amount.toString());let u=E(N({},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:c.config,rewardInfos:i[e].rewardInfos.filter(l=>!l.vault.equals(z.PublicKey.default)).map(l=>{var d;return{mint:Bt({address:l.mint.toBase58(),programId:Ge.TOKEN_PROGRAM_ID.toBase58(),decimals:(d=o[l.mint.toBase58()].decimals)!=null?d:6}),vault:l.vault.toBase58()}})});return{poolInfo:c,poolKeys:u,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=Ya.decode(i.data),a=new z.PublicKey(n.programId),c=new z.PublicKey(e),u=await tc(a,this.scope.connection,c,o.tickCurrent,r.tickSpacing,o.tickArrayBitmap,t);return{poolInfo:n,rpcData:o,configInfo:r,tickArrays:u}}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 yo({connection:this.scope.connection,mints:Array.from(n).map(r=>new z.PublicKey(r))}),i={};return e.forEach(r=>{let a=t[r.toString()];if(!a)return null;let c=o[a.mintA.toBase58()],u=o[a.mintB.toBase58()];i[r.toString()]={poolInfo:{id:r.toString(),programId:a.programId.toString(),mintA:{address:a.mintA.toString(),programId:c.programId.toString(),decimals:a.mintDecimalsA},mintB:{address:a.mintB.toString(),programId:u.programId.toString(),decimals:a.mintDecimalsB},config:{id:a.configId.toBase58(),tickSpacing:a.tickSpacing}},rpcData:a}}),i}};var ac=(t=>(t.ALL="all",t.Strict="strict",t))(ac||{}),sc=(n=>(n.All="all",n.Standard="Standard",n.Concentrated="Concentrated",n))(sc||{});var ss=require("@solana/web3.js");var ns=v([V("instruction")]),os=v([V("instruction")]),Iy=v([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),pe("accRewardPerShare"),M("rewardVault"),M("rewardMint"),M("rewardSender"),w("rewardType"),J(w(),15,"padding")]),od=v([w("state"),w("nonce"),M("lpVault"),M("rewardVault"),M(),M(),w(),w(),w("totalReward"),pe("perShareReward"),w("lastSlot"),w("perSlotReward")]),id=v([w("state"),w("nonce"),M("lpVault"),M("rewardVaultA"),w("totalRewardA"),pe("perShareRewardA"),w("perSlotRewardA"),V("option"),M("rewardVaultB"),xe(7),w("totalRewardB"),pe("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),M()]),rd=v([w(),w("state"),w("nonce"),w("validRewardTokenNum"),pe("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),M("lpMint"),M("lpVault"),J(Iy,5,"rewardInfos"),M("creator"),M(),J(w(),32,"padding")]),uc=new Proxy(od,{get(s,e,t){return e==="decode"?(...n)=>{let o=s.decode(...n);return E(N({},o),{version:3,rewardInfos:[{rewardVault:o.rewardVault,totalReward:o.totalReward,perSlotReward:o.perSlotReward,perShareReward:o.perShareReward}]})}:Reflect.get(s,e,t)}}),cc=new Proxy(id,{get(s,e,t){return e==="decode"?(...n)=>{let o=s.decode(...n);return E(N({},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(s,e,t)}}),Bi=new Proxy(rd,{get(s,e,t){return e==="decode"?(...n)=>{let o=s.decode(...n);return E(N({},o),{version:6,rewardInfos:o.rewardInfos.map(i=>{var r;return E(N({},i),{rewardType:((r=Object.entries(ao).find(a=>String(a[1])===i.rewardType.toString()))!=null?r:["Standard SPL"])[0]})})})}:Reflect.get(s,e,t)}}),ad=v([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),is=v([V("instruction"),w("nonce"),J(ad,5,"rewardTimeInfo")]),rs=v([V("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),as=v([V("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),By=v([w("state"),M("id"),M("owner"),w("deposited"),J(w(),1,"rewardDebts")]),xi=v([w("state"),M("id"),M("owner"),w("deposited"),J(pe(),1,"rewardDebts"),w(""),w("voteLockedBalance"),J(w(),15)]),xy=v([w("state"),M("id"),M("owner"),w("deposited"),J(w(),2,"rewardDebts")]),lc=v([w("state"),M("id"),M("owner"),w("deposited"),J(pe(),2,"rewardDebts"),J(w(),17)]),mc=v([w(),w("state"),M("id"),M("owner"),w("deposited"),J(pe(),5,"rewardDebts"),J(w(),16)]),Zt=v([V("instruction"),w("amount")]),sd=v([M("mint"),M("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),hu("digitShift"),J(V(),7,"reserved1"),J(w(),7,"reserved2")]),dc=v([xe(8),M("governanceProgramId"),M("realm"),M("realmGoverningTokenMint"),M("realmAuthority"),J(V(),32,"reserved1"),J(sd,4,"votingMints"),Eo("timeOffset"),V("bump"),J(V(),7,"reserved2"),J(w(),11,"reserved3")]),ud=v([Eo("startTime"),Eo("endTime"),V("kind"),J(V(),15,"reserved")]),cd=v([J(ud,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),Je("isUsed"),Je("allowClawback"),V("votingMintConfigIdx"),J(V(),29,"reserved")]),pc=v([xe(8),M("voterAuthority"),M("registrar"),J(cd,32,"deposits"),V("voterBump"),V("voterWweightRecordBump"),J(V(),94,"reserved")]);var ld=require("@solana/spl-token"),Jk=Se("Raydium_farm_config"),fc=new ss.PublicKey("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),yc=new ss.PublicKey("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),Sy=ld.NATIVE_MINT,Ky=new ss.PublicKey("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX"),Si={3:uc,5:cc,6:Bi},Ki={3:xi,5:lc,6:mc},us=s=>[3,4,5,6].indexOf(s)!==-1,cs=s=>{var r;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=s,o=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,i={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${o}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${o}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${o}`}};return(r=i[e])==null?void 0:r.call(i)},ao={"Standard SPL":0,"Option tokens":1},dn={[Va.toString()]:3,[Ea.toString()]:4,[Da.toString()]:5,[Wo.toString()]:6,[Tn.FARM_PROGRAM_ID_V3.toString()]:3,[Tn.FARM_PROGRAM_ID_V4.toString()]:4,[Tn.FARM_PROGRAM_ID_V5.toString()]:5,[Tn.FARM_PROGRAM_ID_V6.toString()]:6};var j=require("@solana/web3.js"),Sr=re(require("bn.js")),vt=require("@solana/spl-token");function ls(s,e,t){return ae([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],s)}function ms(s,e){return ae([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],s)}function ds(s,e){return ae([e.toBuffer()],s)}function ps(s,e,t){return ae([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],s)}function fs(s,e,t){return ae([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],s)}function ys(s,e,t,n){return ae([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],s)}var nn=re(require("bn.js"));var bc=s=>typeof s=="number",gc=s=>s?new Date(s):new Date,Ci=s=>gc(s).getTime();function Pc(s,e,t){let n=bc(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):Ci(e);return Ci(s)<=n}function Ac(s,e,t){let n=bc(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):Ci(e);return Ci(s)>n}function Cy(s,e){var o,i,r,a,c;let n=Ci(s)+((o=e.days)!=null?o:0)*24*60*60*1e3+((i=e.hours)!=null?i:0)*60*60*1e3+((r=e.minutes)!=null?r:0)*60*1e3+((a=e.seconds)!=null?a:0)*1e3+((c=e.milliseconds)!=null?c:0);return gc(n)}var md=require("@solana/web3.js"),dd=re(require("bn.js"));async function wc(s){new Promise(e=>setTimeout(e,s))}function Ry(){return new Date().getTime()}function pd(s){return typeof s=="object"&&s!==null&&![We,Ce,md.PublicKey,Ae,dd.default,ht,at].some(e=>typeof e=="object"&&s instanceof e)}function nt(s){return typeof s=="string"?ga(s):Array.isArray(s)?s.map(e=>nt(e)):pd(s)?Object.fromEntries(Object.entries(s).map(([e,t])=>[e,nt(t)])):s}var xr=Se("Raydium.farm.util");function Ri({programId:s,poolId:e,mint:t,type:n}){let{publicKey:o}=ae([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],s);return o}function zt({programId:s,poolId:e,owner:t,version:n}){let{publicKey:o}=ae([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],s);return o}var kc=({programId:s,poolId:e})=>ae([e.toBuffer()],s);function Tc(s){return{isSet:new nn.default(1),rewardPerSecond:me(s.perSecond),rewardOpenTime:me(s.openTime),rewardEndTime:me(s.endTime),rewardType:me(ao[s.rewardType])}}function bs(s){return me(s.endTime).sub(me(s.openTime)).mul(me(s.perSecond))}function $o(s){let e=Ki[s];return e||xr.logWithError("invalid version",s),e}function fd(s){let e=Si[s];return e||xr.logWithError("invalid version",s),e}function yd(s,e,t,n){if(s.version===3||s.version===5){if(s.lastSlot.gte(new nn.default(t)))return s;let o=new nn.default(t).sub(s.lastSlot);s.lastSlot=new nn.default(t);for(let i of s.rewardInfos){if(e.amount.eq(new nn.default(0)))continue;let r=i.perSlotReward.mul(o);i.perShareReward=i.perShareReward.add(r.mul(new nn.default(10).pow(new nn.default(s.version===3?9:15))).div(e.amount)),i.totalReward=i.totalReward.add(r)}}else if(s.version===6)for(let o of s.rewardInfos){if(o.rewardState.eq(new nn.default(0)))continue;let i=nn.default.min(new nn.default(n),o.rewardEndTime);if(o.rewardOpenTime.gte(i))continue;let a=i.sub(o.rewardLastUpdateTime).mul(o.rewardPerSecond),c=o.totalReward.sub(o.totalRewardEmissioned);c.lt(a)?(a=c,o.rewardLastUpdateTime=o.rewardLastUpdateTime.add(c.div(o.rewardPerSecond))):o.rewardLastUpdateTime=i,!e.amount.eq(new nn.default(0))&&(o.accRewardPerShare=o.accRewardPerShare.add(a.mul(s.rewardMultiplier).div(e.amount)),o.totalRewardEmissioned=o.totalRewardEmissioned.add(a))}return s}async function Ly({connection:s,farmPools:e,owner:t,config:n,chainTime:o}){let i=!1,r=!1,a=new nn.default(10),c=[];for(let p of e){let m=nt(p);m.version===6?r=!0:i=!0,c.push({pubkey:m.id,version:m.version,key:"state",poolId:m.id},{pubkey:m.lpVault,version:m.version,key:"lpVault",poolId:m.id}),t&&c.push({pubkey:zt({programId:m.programId,poolId:m.id,owner:t,version:p.version}),version:m.version,key:"ledger",poolId:m.id})}let u={},l=await Ue(s,c,n);for(let{pubkey:p,version:m,key:f,poolId:y,accountInfo:b}of l){let g=y.toBase58();if(u[g]=N({},u[g]),f==="state"){let P=fd(m);(!b||!b.data||b.data.length!==P.span)&&xr.logWithError(`invalid farm state account info, pools.id, ${p}`),u[g].state=P.decode(b.data)}else if(f==="lpVault")(!b||!b.data||b.data.length!==kn.span)&&xr.logWithError(`invalid farm lp vault account info, pools.lpVault, ${p}`),u[g].lpVault=kn.decode(b.data);else if(f==="ledger"){let P=$o(m);b&&b.data&&(b.data.length!==P.span&&xr.logWithError(`invalid farm ledger account info, ledger, ${p}`),u[g].ledger=P.decode(b.data))}}let d=r||i?await s.getSlot():0;for(let p of Object.keys(u))u[p]!==void 0&&(u[p].state=yd(u[p].state,u[p].lpVault,d,o));for(let[p,{state:m,ledger:f}]of Object.entries(u))if(f){let y=m.version===6?m.rewardMultiplier:m.rewardInfos.length===1?a.pow(new nn.default(9)):a.pow(new nn.default(15)),b=m.rewardInfos.map((g,P)=>{let k=f.rewardDebts[P];return f.deposited.mul(m.version===6?g.accRewardPerShare:g.perShareReward).div(y).sub(k)});u[p].wrapped=E(N({},u[p].wrapped),{pendingRewards:b})}return u}function Oy(s,e=Date.now()){if(s.version===6){let t=s.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>Pc(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>Ac(e,n.toNumber(),{unit:"s"})))return"closed pool"}else{let t=s.state.rewardInfos.map(({perSlotReward:n})=>n);if(t.length===2){if(String(t[0])==="0"&&String(t[1])!=="0")return"normal fusion pool";if(String(t[0])!=="0"&&String(t[1])!=="0")return"dual fusion pool";if(String(t[0])==="0"&&String(t[1])==="0")return"closed pool"}else if(t.length===1&&String(t[0])==="0")return"closed pool"}}async function gs(s,e,t,n){let o=await s.getAccountInfo(e);if(o===null)throw Error("registrar info check error");let r=dc.decode(o.data).votingMints.findIndex(l=>l.mint.equals(n));if(r===-1)throw Error("find voter mint error");let a=await s.getAccountInfo(t);if(a===null)return{index:r,isInit:!1};let u=pc.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===r);return u===-1?{index:r,isInit:!1}:{index:u,isInit:!0}}var Ny=Se("Raydium_farm_instruction"),Kr={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};function Li(s){let{version:e,id:t,ledger:n,programId:o,owner:i}=s,r={3:9,5:10}[e];r||Ny.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(ns.span);ns.encode({instruction:r},a);let c=[T({pubkey:t}),T({pubkey:n}),T({pubkey:i,isWritable:!1}),T({pubkey:j.SystemProgram.programId,isWritable:!1}),T({pubkey:j.SYSVAR_RENT_PUBKEY,isWritable:!1})];return{instruction:new j.TransactionInstruction({programId:o,keys:c,data:a}),instructionType:Y.FarmV3CreateLedger}}function hc(s){var n;let e=Buffer.alloc(is.span);is.encode({instruction:0,nonce:new Sr.default(s.nonce),rewardTimeInfo:s.rewardInfoConfig},e);let t=[...ya,T({pubkey:s.farmId}),T({pubkey:s.farmAuthority,isWritable:!1}),T({pubkey:s.lpVault}),T({pubkey:s.lpMint,isWritable:!1}),T({pubkey:s.lockVault}),T({pubkey:s.lockMint,isWritable:!1}),T({pubkey:(n=s.lockUserAccount)!=null?n:Ot}),T({pubkey:s.owner,isWritable:!1,isSigner:!0})];for(let o of s.rewardInfo)t.push(T({pubkey:o.rewardMint,isWritable:!1}),T({pubkey:o.rewardVault}),T({pubkey:o.userRewardToken}));return{instruction:new j.TransactionInstruction({programId:s.programId,keys:t,data:e}),instructionType:Y.FarmV6Create}}function Ic(s){let e=Buffer.alloc(os.span);os.encode({instruction:5},e);let t=[T({pubkey:vt.TOKEN_PROGRAM_ID,isWritable:!1}),T({pubkey:s.id}),T({pubkey:s.authority,isWritable:!1}),T({pubkey:s.lpVault,isWritable:!1}),T({pubkey:s.rewardVault}),T({pubkey:s.userRewardToken}),T({pubkey:s.owner,isWritable:!1,isSigner:!0})];return{instruction:new j.TransactionInstruction({programId:s.programId,keys:t,data:e}),instructionType:Y.FarmV6CreatorWithdraw}}function bd(s,e,t,n,o,i,r,a,c,u,l,d,p){let m=v([V("depositEntryIndex"),w("amount")]),f=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:vt.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:or,isSigner:!1,isWritable:!1}],y=Buffer.alloc(m.span);m.encode({depositEntryIndex:d,amount:p},y);let b=Buffer.from([...Kr.voterStakeRegistryDeposit,...y]);return new j.TransactionInstruction({keys:f,programId:s,data:b})}function gd(s,e,t,n){let o=v([]),i=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:j.SystemProgram.programId,isSigner:!1,isWritable:!1}],r=Buffer.alloc(o.span);o.encode({},r);let a=Buffer.from([...Kr.voterStakeRegistryUpdateVoterWeightRecord,...r]);return new j.TransactionInstruction({keys:i,programId:s,data:a})}function Pd(s,e,t,n,o,i,r,a,c,u,l,d,p,m,f){let y=v([V("depositEntryIndex"),w("amount")]),b=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:vt.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:or,isSigner:!1,isWritable:!1}],g=Buffer.alloc(y.span);y.encode({depositEntryIndex:m,amount:f},g);let P=Buffer.from([...Kr.voterStakeRegistryWithdraw,...g]);return new j.TransactionInstruction({keys:b,programId:s,data:P})}function Ad(s,e,t,n,o,i){let r=v([V("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:j.SystemProgram.programId,isSigner:!1,isWritable:!1}],c=Buffer.alloc(r.span);return r.encode({ins:23},c),new j.TransactionInstruction({keys:a,programId:s,data:c})}function wd(s,e,t,n,o,i,r,a){let c=v([V("voterBump"),V("voterWeightRecordBump")]),u=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:j.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:Tt,isSigner:!1,isWritable:!1},{pubkey:or,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({voterBump:r,voterWeightRecordBump:a},l);let d=Buffer.from([...Kr.voterStakeRegistryCreateVoter,...l]);return new j.TransactionInstruction({keys:u,programId:s,data:d})}function kd(s,e,t,n,o,i,r,a,c,u,l,d){let p=v([V("depositEntryIndex"),V("kind"),V("option"),w("startTs"),Qe("periods"),Je("allowClawback")]),m=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:j.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:vt.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:vt.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:Tt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({depositEntryIndex:a,kind:c,option:u===void 0?0:1,startTs:u,periods:l,allowClawback:d},f);let y=Buffer.from([...Kr.voterStakeRegistryCreateDepositEntry,...f]);return new j.TransactionInstruction({keys:m,programId:s,data:y})}async function My({connection:s,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:o,communityTokenMint:i,owner:r,poolId:a,tokenProgram:c}){let u=ls(n,o,i).publicKey,l=zt({programId:e,poolId:a,owner:r,version:3}),d=await s.getAccountInfo(l);if(d===null)throw Error("user is not staker");let p=xi.decode(d.data),m=p.deposited.sub(p.voteLockedBalance);if(console.log("amount",m.toString()),m.eq(new Sr.default(0)))throw Error("user do not has new stake amount");let f=ms(e,a).publicKey,y=ds(e,a).publicKey,{publicKey:b,nonce:g}=ps(n,u,r),P=ne(b,f,c).publicKey,{publicKey:k,nonce:I}=fs(n,u,r),A=ys(t,o,i,r).publicKey,h=[],B=ne(r,f,c).publicKey;if(await s.getAccountInfo(B)===null&&h.push((0,vt.createAssociatedTokenAccountIdempotentInstruction)(r,B,r,f)),await s.getAccountInfo(b)===null){let L=Ad(t,o,r,i,r,A);h.push(L,wd(n,u,b,k,r,r,g,I))}let{index:x,isInit:C}=await gs(s,u,b,f);return C||h.push(kd(n,u,b,P,r,r,f,x,0,void 0,0,!1)),h.push(bd(n,u,b,P,B,r,l,a,f,y,e,x,m),gd(n,u,b,k)),h}async function Fy({connection:s,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:o,communityTokenMint:i,owner:r,poolId:a,tokenProgram:c}){let u=ls(n,o,i).publicKey,l=zt({programId:e,poolId:a,owner:r,version:3}),d=await s.getAccountInfo(l);if(d===null)throw Error("user is not staker");let p=xi.decode(d.data);if(p.voteLockedBalance.eq(new Sr.default(0)))throw Error("user has vote locked balance = 0");let m=ms(e,a).publicKey,f=ds(e,a).publicKey,{publicKey:y}=ps(n,u,r),b=ne(y,m,c).publicKey,{publicKey:g}=fs(n,u,r),P=ys(t,o,i,r).publicKey,k=[],{index:I,isInit:A}=await gs(s,u,y,m);if(!A)throw Error("deposit entry index check error");return k.push(Pd(n,u,y,r,P,g,b,ne(r,m,c).publicKey,l,a,m,f,e,I,p.voteLockedBalance)),k}function Ps({payer:s,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:o}){let i=Buffer.alloc(rs.span);rs.encode({instruction:3,rewardReopenTime:me(o.openTime),rewardEndTime:me(o.endTime),rewardPerSecond:me(o.perSecond)},i);let r=[T({pubkey:vt.TOKEN_PROGRAM_ID,isWritable:!1}),T({pubkey:n.id}),T({pubkey:n.lpVault,isWritable:!1}),T({pubkey:e}),T({pubkey:t}),T({pubkey:s,isWritable:!1,isSigner:!0})];return new j.TransactionInstruction({programId:n.programId,keys:r,data:i})}function As({payer:s,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:o}){let i=Buffer.alloc(as.span);as.encode({instruction:4,isSet:new Sr.default(1),rewardPerSecond:me(o.perSecond),rewardOpenTime:me(o.openTime),rewardEndTime:me(o.endTime),rewardType:me(ao[o.rewardType])},i);let r=[...ya,T({pubkey:t.id}),T({pubkey:t.authority,isWritable:!1}),T({pubkey:o.mint,isWritable:!1}),T({pubkey:n}),T({pubkey:e}),T({pubkey:s,isWritable:!1,isSigner:!0})];return new j.TransactionInstruction({programId:t.programId,keys:r,data:i})}function vy(s){let{farmInfo:e,farmKeys:t,version:n,lpAccount:o,rewardAccounts:i,owner:r,instruction:a,amount:c,deposit:u}=s,[l,d]=[new j.PublicKey(e.programId),new j.PublicKey(e.id)],p=zt({programId:l,poolId:d,owner:r,version:n}),m=Buffer.alloc(Zt.span);Zt.encode({instruction:a,amount:c},m);let f=n===6?[T({pubkey:vt.TOKEN_PROGRAM_ID,isWritable:!1}),...u?[T({pubkey:j.SystemProgram.programId,isWritable:!1})]:[],T({pubkey:d}),T({pubkey:new j.PublicKey(t.authority),isWritable:!1}),T({pubkey:new j.PublicKey(t.lpVault)}),T({pubkey:p}),T({pubkey:r,isWritable:!1,isSigner:!0}),T({pubkey:o})]:[T({pubkey:d}),T({pubkey:new j.PublicKey(t.authority),isWritable:!1}),T({pubkey:p}),T({pubkey:r,isWritable:!1,isSigner:!0}),T({pubkey:o}),T({pubkey:new j.PublicKey(t.lpVault)}),T({pubkey:i[0]}),T({pubkey:new j.PublicKey(t.rewardInfos[0].vault)}),T({pubkey:j.SYSVAR_CLOCK_PUBKEY,isWritable:!1}),T({pubkey:vt.TOKEN_PROGRAM_ID,isWritable:!1})];if(n===5)for(let y=1;y<t.rewardInfos.length;y++)f.push(T({pubkey:i[y]})),f.push(T({pubkey:new j.PublicKey(t.rewardInfos[y].vault)}));if(n===6)for(let y=0;y<t.rewardInfos.length;y++)f.push(T({pubkey:new j.PublicKey(t.rewardInfos[y].vault)})),f.push(T({pubkey:i[y]}));return new j.TransactionInstruction({programId:l,keys:f,data:m})}function Oi(s){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:r}=s,[a,c]=[new j.PublicKey(e.programId),new j.PublicKey(e.id)],u=zt({programId:a,poolId:c,owner:i,version:6}),l=Buffer.alloc(Zt.span);Zt.encode({instruction:2,amount:me(r)},l);let d=[T({pubkey:vt.TOKEN_PROGRAM_ID,isWritable:!1}),T({pubkey:c}),T({pubkey:new j.PublicKey(t.authority),isWritable:!1}),T({pubkey:new j.PublicKey(t.lpVault)}),T({pubkey:u}),T({pubkey:i,isWritable:!1,isSigner:!0}),T({pubkey:n})];for(let p=0;p<t.rewardInfos.length;p++)d.push(T({pubkey:new j.PublicKey(t.rewardInfos[p].vault)})),d.push(T({pubkey:o[p]}));return new j.TransactionInstruction({programId:a,keys:d,data:l})}function Ni(s){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:r,userAuxiliaryLedgers:a}=s,[c,u]=[new j.PublicKey(e.programId),new j.PublicKey(e.id)],l=zt({programId:c,poolId:u,owner:i,version:5}),d=Buffer.alloc(Zt.span);Zt.encode({instruction:12,amount:me(r)},d);let p=[T({pubkey:u}),T({pubkey:new j.PublicKey(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:i,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new j.PublicKey(t.lpVault)}),T({pubkey:o[0]}),T({pubkey:new j.PublicKey(t.rewardInfos[0].vault)}),T({pubkey:j.SYSVAR_CLOCK_PUBKEY,isWritable:!1}),T({pubkey:vt.TOKEN_PROGRAM_ID,isWritable:!1})];for(let m=1;m<t.rewardInfos.length;m++)p.push(T({pubkey:o[m]})),p.push(T({pubkey:new j.PublicKey(t.rewardInfos[m].vault)}));if(a)for(let m of a)p.push(T({pubkey:m}));return new j.TransactionInstruction({programId:c,keys:p,data:d})}function Bc(s){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:r,userAuxiliaryLedgers:a}=s,[c,u]=[new j.PublicKey(e.programId),new j.PublicKey(e.id)],l=v([V("instruction"),w("amount")]),d=[T({pubkey:u}),T({pubkey:new j.PublicKey(t.authority),isWritable:!1}),T({pubkey:a[0]}),T({pubkey:i,isSigner:!0,isWritable:!1}),T({pubkey:n}),T({pubkey:new j.PublicKey(t.lpVault)}),T({pubkey:o[0]}),T({pubkey:new j.PublicKey(t.rewardInfos[0].vault)}),T({pubkey:j.SYSVAR_CLOCK_PUBKEY,isWritable:!1}),T({pubkey:vt.TOKEN_PROGRAM_ID,isWritable:!1}),T({pubkey:o[1]}),T({pubkey:new j.PublicKey(t.rewardInfos[1].vault)})],p=Buffer.alloc(l.span);return l.encode({instruction:2,amount:r},p),new j.TransactionInstruction({keys:d,programId:c,data:p})}function Mi(s){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:r,userAuxiliaryLedgers:a}=s,[c,u]=[new j.PublicKey(e.programId),new j.PublicKey(e.id)],l=zt({programId:c,poolId:u,owner:i,version:3}),d=Buffer.alloc(Zt.span);Zt.encode({instruction:11,amount:me(r)},d);let p=[T({pubkey:u}),T({pubkey:new j.PublicKey(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:i,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new j.PublicKey(t.lpVault)}),T({pubkey:o[0]}),T({pubkey:new j.PublicKey(t.rewardInfos[0].vault)}),T({pubkey:j.SYSVAR_CLOCK_PUBKEY,isWritable:!1}),T({pubkey:vt.TOKEN_PROGRAM_ID,isWritable:!1})];if(a)for(let m of a)p.push(T({pubkey:m}));return new j.TransactionInstruction({programId:c,keys:p,data:d})}function xc(s){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:r,userAuxiliaryLedgers:a}=s,[c,u]=[new j.PublicKey(e.programId),new j.PublicKey(e.id)],l=zt({programId:c,poolId:u,owner:i,version:3}),d=Buffer.alloc(Zt.span);Zt.encode({instruction:10,amount:me(r)},d);let p=[T({pubkey:u}),T({pubkey:new j.PublicKey(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:i,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new j.PublicKey(t.lpVault)}),T({pubkey:o[0]}),T({pubkey:new j.PublicKey(t.rewardInfos[0].vault)}),T({pubkey:j.SYSVAR_CLOCK_PUBKEY,isWritable:!1}),T({pubkey:vt.TOKEN_PROGRAM_ID,isWritable:!1})];if(a)for(let m of a)p.push(T({pubkey:m}));return new j.TransactionInstruction({programId:c,keys:p,data:d})}function Sc(s){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:r,userAuxiliaryLedgers:a}=s,[c,u]=[new j.PublicKey(e.programId),new j.PublicKey(e.id)],l=zt({programId:c,poolId:u,owner:i,version:5}),d=Buffer.alloc(Zt.span);Zt.encode({instruction:11,amount:me(r)},d);let p=[T({pubkey:u}),T({pubkey:new j.PublicKey(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:i,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new j.PublicKey(t.lpVault)}),T({pubkey:o[0]}),T({pubkey:new j.PublicKey(t.rewardInfos[0].vault)}),T({pubkey:j.SYSVAR_CLOCK_PUBKEY,isWritable:!1}),T({pubkey:vt.TOKEN_PROGRAM_ID,isWritable:!1})];for(let m=1;m<t.rewardInfos.length;m++)p.push(T({pubkey:o[m]})),p.push(T({pubkey:new j.PublicKey(t.rewardInfos[m].vault)}));if(a)for(let m of a)p.push(T({pubkey:m}));return new j.TransactionInstruction({programId:c,keys:p,data:d})}function Kc(s){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:i,amount:r}=s,[a,c]=[new j.PublicKey(e.programId),new j.PublicKey(e.id)],u=zt({programId:a,poolId:c,owner:i,version:6}),l=Buffer.alloc(Zt.span);Zt.encode({instruction:1,amount:me(r)},l);let d=[T({pubkey:vt.TOKEN_PROGRAM_ID,isWritable:!1}),T({pubkey:j.SystemProgram.programId,isWritable:!1}),T({pubkey:c}),T({pubkey:new j.PublicKey(t.authority),isWritable:!1}),T({pubkey:new j.PublicKey(t.lpVault)}),T({pubkey:u}),T({pubkey:i,isWritable:!1,isSigner:!0}),T({pubkey:n})];for(let p=0;p<t.rewardInfos.length;p++)d.push(T({pubkey:new j.PublicKey(t.rewardInfos[p].vault)})),d.push(T({pubkey:o[p]}));return new j.TransactionInstruction({programId:a,keys:d,data:l})}var uo=re(require("bn.js")),Cr=class extends st{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ot)){let n=await oo({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:bs(E(N({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:n,programId:o=Wo,txVersion:i,feePayer:r,lockProgram:a}){var B,S;this.checkDisabled(),this.scope.checkOwner();let u={lpMint:new Le.PublicKey(e.lpMint.address),lockInfo:{lockMint:(B=a==null?void 0:a.mint)!=null?B:fc,lockVault:(S=a==null?void 0:a.vault)!=null?S:yc},version:6,rewardInfos:t,programId:o},l=this.createTxBuilder(r),d=n!=null?n:this.scope.ownerPubKey,p=ct({fromPublicKey:d,programId:u.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(Bi.span);l.addInstruction({instructions:[Le.SystemProgram.createAccountWithSeed({fromPubkey:d,basePubkey:d,seed:p.seed,newAccountPubkey:p.publicKey,lamports:m,space:Bi.span,programId:u.programId})]});let{publicKey:f,nonce:y}=kc({programId:new Le.PublicKey(u.programId),poolId:p.publicKey}),b=Ri({programId:u.programId,poolId:p.publicKey,mint:u.lpMint,type:"lpVault"}),g=[],P=[];for(let K of u.rewardInfos){K.openTime>=K.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",K.openTime.toString()),isNaN(ao[K.rewardType])&&this.logAndCreateError("rewardType error",K.rewardType),Number(K.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",K.perSecond),g.push(Tc(K));let{rewardPubKey:x,newInstruction:C}=await this._getUserRewardInfo({rewardInfo:K,payer:d});C&&l.addInstruction(C),x||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let L=K.mint.equals(Ot)?new Le.PublicKey(Lt.address):K.mint;P.push({rewardMint:L,rewardVault:Ri({programId:u.programId,poolId:p.publicKey,mint:L,type:"rewardVault"}),userRewardToken:x})}let{account:k,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({mint:new Le.PublicKey(u.lockInfo.lockMint),owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1});I&&l.addInstruction(I),k||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:A,instructionType:h}=hc({farmId:p.publicKey,owner:this.scope.ownerPubKey,farmAuthority:f,lpVault:b,lpMint:u.lpMint,lockVault:u.lockInfo.lockVault,lockMint:u.lockInfo.lockMint,lockUserAccount:k,programId:u.programId,rewardInfo:P,rewardInfoConfig:g,nonce:y});return l.addInstruction({instructions:[A],instructionTypes:[h]}).versionBuild({txVersion:i,extInfo:{farmId:p.publicKey,farmAuthority:f,lpVault:b,lockUserAccount:k,nonce:y}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:o,feePayer:i}){var g;let r=dn[e.programId];r!==6&&this.logAndCreateError("invalid farm version ",r);let a=nt((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),c={id:a.id,rewardInfos:e.rewardInfos,lpVault:a.lpVault,programId:a.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=t||this.scope.ownerPubKey,l=n.mint.equals(Ot)?new Le.PublicKey(Lt.address):n.mint,d=c.rewardInfos.findIndex(P=>new Le.PublicKey(P.mint.address).equals(l)),p=a.rewardInfos[d];p||this.logAndCreateError("configuration does not exist","rewardMint",l);let m=(g=p.vault)!=null?g:Ot,f=this.createTxBuilder(i),{rewardPubKey:y,newInstruction:b}=await this._getUserRewardInfo({rewardInfo:n,payer:u});return b&&f.addInstruction(b),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),f.addInstruction({instructions:[Ps({payer:this.scope.ownerPubKey,rewardVault:m,userRewardTokenPub:y,farmKeys:c,rewardInfo:n})],instructionTypes:[Y.FarmV6Restart]}).versionBuild({txVersion:o})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:o,feePayer:i}){var d;let r=dn[e.programId];r!==6&&this.logAndCreateError("invalid farm version ",r);let a=nt((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),c={id:a.id,rewardInfos:e.rewardInfos,lpVault:a.lpVault,programId:a.programId};n.forEach(p=>{p.openTime>=p.endTime&&this.logAndCreateError("start time error","newRewardInfo",p)});let u=t||this.scope.ownerPubKey,l=this.createTxBuilder(i);for(let p of n){let m=p.mint.equals(Ot)?new Le.PublicKey(Lt.address):p.mint,f=c.rewardInfos.findIndex(I=>new Le.PublicKey(I.mint.address).equals(m)),y=a.rewardInfos[f];y||this.logAndCreateError("configuration does not exist","rewardMint",m);let b=(d=y.vault)!=null?d:Ot,{rewardPubKey:g,newInstruction:P}=await this._getUserRewardInfo({rewardInfo:p,payer:u});P&&l.addInstruction(P),g||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let k=Ps({payer:this.scope.ownerPubKey,rewardVault:b,userRewardTokenPub:g,farmKeys:c,rewardInfo:p});l.addInstruction({instructions:[k],instructionTypes:[Y.FarmV6Restart]})}return l.versionBuild({txVersion:o})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:o,payer:i,feePayer:r}=e,a=dn[n.programId];a!==6&&this.logAndCreateError("invalid farm version ",a);let c=nt((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=i!=null?i:this.scope.ownerPubKey,l=this.createTxBuilder(r),d=o.mint.equals(Ot)?new Le.PublicKey(Lt.address):o.mint,p=Ri({programId:new Le.PublicKey(n.programId),poolId:new Le.PublicKey(n.id),mint:d,type:"rewardVault"}),{rewardPubKey:m,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:o,payer:u});return f&&l.addInstruction(f),m||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),o.mint=d,l.addInstruction({instructions:[As({payer:this.scope.ownerPubKey,userRewardTokenPub:m,farmKeys:c,rewardVault:p,rewardInfo:o})],instructionTypes:[Y.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:o,payer:i,feePayer:r}=e,a=dn[n.programId];a!==6&&this.logAndCreateError("invalid farm version ",a);let c=nt((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=i!=null?i:this.scope.ownerPubKey,l=this.createTxBuilder(r);for(let d of o){let p=d.mint.equals(Ot)?new Le.PublicKey(Lt.address):d.mint,m=Ri({programId:new Le.PublicKey(n.programId),poolId:new Le.PublicKey(n.id),mint:p,type:"rewardVault"}),{rewardPubKey:f,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:d,payer:u});y&&l.addInstruction(y),f||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let b=As({payer:this.scope.ownerPubKey,userRewardTokenPub:f,farmKeys:c,rewardVault:m,rewardInfo:E(N({},d),{mint:p})});l.addInstruction({instructions:[b],instructionTypes:[Y.FarmV6CreatorAddReward]})}return l.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:o,feePayer:i,useSOLBalance:r,associatedOnly:a=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:u,computeBudgetConfig:l,txTipConfig:d}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:p,programId:m}=n,f=dn[m];f===4&&this.logAndCreateError("V4 has suspended deposits:",n.programId),us(f)||this.logAndCreateError("invalid farm program:",n.programId);let[y,b]=[new Le.PublicKey(n.programId),new Le.PublicKey(n.id)],g=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],P=zt({programId:y,poolId:b,owner:this.scope.ownerPubKey,version:f}),k=this.createTxBuilder(i);k.addCustomComputeBudget(l),k.addTipInstruction(d);let I={};for(let R of this.scope.account.tokenAccounts)if(a){let F=ne(this.scope.ownerPubKey,R.mint,R.programId).publicKey;R.publicKey&&F.equals(R.publicKey)&&(I[R.mint.toString()]=R.publicKey)}else I[R.mint.toString()]=R.publicKey;let A=g.lpMint,h=I[A.address];h||this.logAndCreateError("you don't have any lp","lp zero",I);let B=[];for(let R of p){let F=r&&R.mint.address===ee.toString(),W=I[R.mint.address];if(!W){let{account:D,instructionParams:X}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:R.mint.programId,mint:new Le.PublicKey(R.mint.address),notUseTokenAccount:F,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!F,associatedOnly:F?!1:a,checkCreateATAOwner:c});W=D,X&&k.addInstruction(X)}I[R.mint.address]=W,B.push(W)}let S,K=await this.scope.connection.getAccountInfo(P);if(K&&(S=$o(f).decode(K.data)),n.programId!==Wo.toString()&&n.programId!==Tn.FARM_PROGRAM_ID_V6.toString()&&!S){let{instruction:R,instructionType:F}=Li({id:b,programId:y,version:f,ledger:P,owner:this.scope.ownerPubKey});k.addInstruction({instructions:[R],instructionTypes:[F]})}let x=cs({version:f,rewardInfos:p,rewardTokenAccountsPublicKeys:B});x&&this.logAndCreateError(x);let C={amount:me(o),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:g,lpAccount:h,rewardAccounts:B,userAuxiliaryLedgers:u==null?void 0:u.map(R=>new Le.PublicKey(R))},L=f===6?Kc(C):f===5?Sc(C):xc(C),O={3:Y.FarmV3Deposit,5:Y.FarmV5Deposit,6:Y.FarmV6Deposit};return k.addInstruction({instructions:[L],instructionTypes:[O[f]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:o,deposited:i,useSOLBalance:r,feePayer:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:l,computeBudgetConfig:d,txTipConfig:p}=e,{rewardInfos:m}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let f=dn[n.programId];us(f)||this.logAndCreateError("invalid farm program:",n.programId);let y=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],b=this.createTxBuilder(a);b.addCustomComputeBudget(d),b.addTipInstruction(p);let g={};for(let x of this.scope.account.tokenAccounts)if(c){let C=ne(this.scope.ownerPubKey,x.mint).publicKey;x.publicKey&&C.equals(x.publicKey)&&(g[x.mint.toString()]=x.publicKey)}else g[x.mint.toString()]=x.publicKey;if(f!==4){let x=zt({programId:new Le.PublicKey(n.programId),poolId:new Le.PublicKey(n.id),owner:this.scope.ownerPubKey,version:f}),C=await this.scope.connection.getAccountInfo(x);if(C)$o(f).decode(C.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else if(f!==6){let{instruction:L,instructionType:O}=Li({id:new Le.PublicKey(y.id),programId:new Le.PublicKey(y.programId),version:f,ledger:x,owner:this.scope.ownerPubKey});b.addInstruction({instructions:[L],instructionTypes:[O]})}}i&&i.isZero()&&!(l||[]).length&&this.logAndCreateError("no deposited lp",{farmId:n.id});let P=y.lpMint.address,k=r&&P===ee.toString(),I=g[P.toString()];if(!I){let{account:x,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new Le.PublicKey(P),notUseTokenAccount:k,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:k?!1:c,checkCreateATAOwner:u});I=x,C&&b.addInstruction(C)}g[P.toString()]=I;let A=[];for(let x of m){let C=r&&x.mint.address===ee.toString(),L=g[x.mint.address];if(!L){let{account:O,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:x.mint.programId,mint:new Le.PublicKey(x.mint.address),notUseTokenAccount:C,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!C,associatedOnly:C?!1:c,checkCreateATAOwner:u});L=O,R&&b.addInstruction(R)}g[x.mint.address]=L,A.push(L)}let h=cs({version:f,rewardInfos:m,rewardTokenAccountsPublicKeys:A});h&&this.logAndCreateError(h);let B={amount:me(o),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:I,rewardAccounts:A,userAuxiliaryLedgers:l==null?void 0:l.map(x=>new Le.PublicKey(x))},S=f===6?Oi(B):f===5?Ni(B):f===4?Bc(B):Mi(B),K={3:Y.FarmV3Withdraw,4:Y.FarmV4Withdraw,5:Y.FarmV5Withdraw,6:Y.FarmV6Withdraw};return b.addInstruction({instructions:[S],instructionTypes:[K[f]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n,computeBudgetConfig:o,txTipConfig:i,feePayer:r}){var y;this.scope.checkOwner();let a=nt((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),c=dn[e.programId];c!==6&&this.logAndCreateError("invalid farm version",c);let u=a.rewardInfos.find(b=>Vt(b.mint.address).equals(Vt(t)));u||this.logAndCreateError("withdraw mint error","rewardInfos",e);let l=(y=u==null?void 0:u.vault)!=null?y:Ot,d=this.createTxBuilder(r),p;if(t.equals(Ot)||t.equals(Le.PublicKey.default)){let b=await oo({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:bs(E(N({},u),{openTime:u.openTime,endTime:u.endTime,perSecond:new so.default(u.perSecond).mul(10**u.mint.decimals).toString()}))});p=b.addresses.newAccount,d.addInstruction(b)}else{let b=await this.scope.account.getCreatedTokenAccount({mint:t});b?p=b:(p=await this.scope.account.getAssociatedTokenAccount(t),d.addInstruction({instructions:[(0,Cc.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,p,this.scope.ownerPubKey,t)],instructionTypes:[Y.CreateATA]}))}let{instruction:m,instructionType:f}=Ic({programId:a.programId,id:a.id,authority:a.authority,lpVault:a.lpVault,rewardVault:l,userRewardToken:p,owner:this.scope.ownerPubKey});return d.addCustomComputeBudget(o),d.addTipInstruction(i),d.addInstruction({instructions:[m],instructionTypes:[f]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:o,associatedOnly:i=!0,checkCreateATAOwner:r=!1,userAuxiliaryLedgers:a,txVersion:c,computeBudgetConfig:u}=e,l=this.createTxBuilder(o),d={};for(let f of this.scope.account.tokenAccounts)if(i){let y=ne(this.scope.ownerPubKey,f.mint).publicKey;f.publicKey&&y.equals(f.publicKey)&&(d[f.mint.toString()]=f.publicKey)}else d[f.mint.toString()]=f.publicKey;let m=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(f=>f.id).join(",")})).reduce((f,y)=>E(N({},f),{[y.id]:y}),{});for(let f of Object.values(t)){let{programId:y,lpMint:b,rewardInfos:g,id:P}=f,k=dn[y],I=b.address,A=n&&I===ee.toString(),h=d[I];if(!h){let{account:L,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new Le.PublicKey(I),notUseTokenAccount:A,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:A?!1:i,checkCreateATAOwner:r});h=L,O&&l.addInstruction(O)}d[I.toString()]=h;let B=[];for(let L of g){let O=n&&L.mint.address===ee.toString(),R=d[L.mint.address];if(!R)if(O){let{account:F,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:L.mint.programId,mint:new Le.PublicKey(L.mint.address),notUseTokenAccount:O,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!O,associatedOnly:O?!1:i,checkCreateATAOwner:r});R=F,W&&l.addInstruction(W)}else{let F=new Le.PublicKey(L.mint.address);R=this.scope.account.getAssociatedTokenAccount(F),l.addInstruction({instructions:[(0,Cc.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,R,this.scope.ownerPubKey,F)]})}d[L.mint.address]=R,B.push(R)}let S=m[P],K={amount:Z,owner:this.scope.ownerPubKey,farmInfo:f,farmKeys:S,lpAccount:h,rewardAccounts:B,userAuxiliaryLedgers:a==null?void 0:a.map(L=>new Le.PublicKey(L))},x=k===6?Oi(K):k===5?Ni(K):Mi(K),C={3:Y.FarmV3Withdraw,5:Y.FarmV5Withdraw,6:Y.FarmV6Withdraw};l.addInstruction({instructions:[x],instructionTypes:[C[k]]})}return c===1?l.sizeCheckBuild({computeBudgetConfig:u}):l.sizeCheckBuildV0({computeBudgetConfig:u})}async fetchFarmBalances(){let e=await this.scope.api.fetchFarmPositions(this.scope.ownerPubKey.toBase58()),t=new Map,n=new Map;Object.keys(e||{}).forEach(u=>{var l,d;Object.keys(e[u]).forEach(p=>{Object.keys(e[u][p]).forEach(m=>{var g,P,k,I,A,h;let f=E(N({},e[u][p][m]),{farmId:p,lpMint:u,userVault:m}),y=t.get(u);t.set(u,{lpMint:u,hasAmount:(y==null?void 0:y.hasAmount)||new so.default(f.lpAmount||0).gt(0),hasV1Data:(y==null?void 0:y.hasV1Data)||f.version==="V1",totalLpAmount:new so.default((g=y==null?void 0:y.totalLpAmount)!=null?g:0).add(f.lpAmount||0).toString(),totalV1LpAmount:f.version==="V1"?new so.default((P=y==null?void 0:y.totalV1LpAmount)!=null?P:0).add(f.lpAmount||0).toString():(k=y==null?void 0:y.totalV1LpAmount)!=null?k:"0",data:[...(y==null?void 0:y.data)||[],f]});let b=n.get(p);f.programId,n.set(p,{lpMint:u,hasAmount:(b==null?void 0:b.hasAmount)||new so.default(f.lpAmount||0).gt(0),hasV1Data:(b==null?void 0:b.hasV1Data)||f.version==="V1",totalLpAmount:new so.default((I=b==null?void 0:b.totalLpAmount)!=null?I:0).add(f.lpAmount||0).toString(),totalV1LpAmount:f.version==="V1"?new so.default((A=b==null?void 0:b.totalV1LpAmount)!=null?A:0).add(f.lpAmount||0).toString():(h=b==null?void 0:b.totalV1LpAmount)!=null?h:"0",data:[...(b==null?void 0:b.data)||[],f]})})}),t.set(u,E(N({},t.get(u)),{totalLpAmount:new so.default((d=(l=t.get(u))==null?void 0:l.totalLpAmount)!=null?d:0).toString()}))});let o=Array.from(n).map(u=>u[1].data).flat(),i=await this.scope.api.fetchFarmInfoById({ids:o.map(u=>u.farmId).join(",")}),r=await Rt(this.scope.connection,o.map(u=>new Le.PublicKey(u.userVault)));return(await Rt(this.scope.connection,o.map(u=>new Le.PublicKey(u.farmId)))).map((u,l)=>{var g;if(!u||!r[l])return;let d=dn[o[l].programId];if(!Si[d]||!Ki[d])return;let p=Ki[d].decode(r[l].data),m=Si[d].decode(u.data),f;m.version===6?f=(g=m.rewardMultiplier)!=null?g:new uo.default(10).pow(new uo.default(9)):f=m.rewardInfos.length===1?new uo.default(10).pow(new uo.default(9)):new uo.default(10).pow(new uo.default(15));let y=i[l],b=m?m.rewardInfos.map((P,k)=>{var h;let I=p.rewardDebts[k],A=p.deposited.mul((m==null?void 0:m.version)===6?P.accRewardPerShare:P.perShareReward).div(f).sub(I);return A.lt(new uo.default(0))&&(A=new uo.default(0)),{mint:(h=y.rewardInfos[k])==null?void 0:h.mint,amount:A.toString()}}):[];return E(N(N({},p),m),{farmInfo:y,pendingRewards:b})}).filter(Boolean)}};var mt=require("@solana/web3.js"),_t=require("@solana/spl-token");var Oe=re(require("bn.js")),on=1e4;function _y(s,e,t,n){if(e===void 0)return{amount:s,fee:void 0,expirationTime:void 0};let o=t.epoch<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,i=new Oe.default(o.maximumFee.toString()),r=t.epoch<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===on){let a=new Oe.default(o.maximumFee.toString());return{amount:s.add(a),fee:a,expirationTime:r}}else{let a=xn(s.mul(new Oe.default(on)),new Oe.default(on-o.transferFeeBasisPoints)),c=new Oe.default(o.maximumFee.toString()),u=a.sub(s).gt(c)?s.add(c):a,l=xn(u.mul(new Oe.default(o.transferFeeBasisPoints)),new Oe.default(on)),d=l.gt(i)?i:l;return{amount:u,fee:d,expirationTime:r}}else{let a=xn(s.mul(new Oe.default(o.transferFeeBasisPoints)),new Oe.default(on)),c=a.gt(i)?i:a;return{amount:s,fee:c,expirationTime:r}}}function St(s,e,t,n){if(e===void 0)return{amount:s,fee:void 0,expirationTime:void 0};let o=E(N({},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 Oe.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===on){let c=new Oe.default(i.maximumFee.toString());return{amount:s.add(c),fee:c,expirationTime:a}}else{let c=xn(s.mul(new Oe.default(on)),new Oe.default(on-i.transferFeeBasisPoints)),u=new Oe.default(i.maximumFee.toString()),l=c.sub(s).gt(u)?s.add(u):c,d=xn(l.mul(new Oe.default(i.transferFeeBasisPoints)),new Oe.default(on)),p=d.gt(r)?r:d;return{amount:l,fee:p,expirationTime:a}}else{let c=xn(s.mul(new Oe.default(i.transferFeeBasisPoints)),new Oe.default(on)),u=c.gt(r)?r:c;return{amount:s,fee:u,expirationTime:a}}}function Zn(s,e){return s===void 0?e:e===void 0?s:Math.min(s,e)}function xn(s,e){let{div:t,mod:n}=s.divmod(e);return n.gt(new Oe.default(0))?t.add(new Oe.default(1)):t}function xo(s,e){if(s.isZero())return new Oe.default(0);let t=s.div(e);return t.isZero()?new Oe.default(1):s.mod(e).gt(new Oe.default(0))?t.add(new Oe.default(1)):t}function Fi(s,e,t){if(e===void 0)return{amount:s,fee:void 0,expirationTime:void 0};let n=Math.floor(t/432e3),o=n<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,i=new Oe.default(o.maximumFee.toString()),r=n<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*432e3-t)*400/1e3:void 0,a=xn(s.mul(new Oe.default(o.transferFeeBasisPoints)),new Oe.default(on)),c=a.gt(i)?i:a;return{amount:s,fee:c,expirationTime:r}}function Jo(s,e,t){if(e===void 0)return{amount:s,fee:void 0,expirationTime:void 0};let n=Math.floor(t/432e3),o=n<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,i=new Oe.default(o.maximumFee.toString()),r=n<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*432e3-t)*400/1e3:void 0;if(o.transferFeeBasisPoints===on){let a=new Oe.default(o.maximumFee.toString());return{amount:s.add(a),fee:a,expirationTime:r}}else{let a=xn(s.mul(new Oe.default(on)),new Oe.default(on-o.transferFeeBasisPoints)),c=new Oe.default(o.maximumFee.toString()),u=a.sub(s).gt(c)?s.add(c):a,l=xn(u.mul(new Oe.default(o.transferFeeBasisPoints)),new Oe.default(on)),d=l.gt(i)?i:l;return{amount:u,fee:d,expirationTime:r}}}var Rc=re(require("bn.js")),ws=new Rc.default(25),Rr=new Rc.default(1e4),Td={4:3,5:3},Lc=new Set(["5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","3uaZBfHPfmpAHW7dsimC1SnyR61X4bJqQZKWmRSCXJxv","GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"]);var Dn=require("@solana/spl-token"),we=require("@solana/web3.js");var Lr=re(require("bn.js"));var ks=v([V("instruction"),w("amountIn"),w("minAmountOut")]),Ts=v([V("instruction"),w("maxAmountIn"),w("amountOut")]),Vy=v([V("instruction"),V("nonce")]),hs=v([V("instruction"),V("nonce"),w("startTime")]),vi=v([w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalValue"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),pe("swapBaseInAmount"),pe("swapQuoteOutAmount"),w("swapBase2QuoteFee"),pe("swapQuoteInAmount"),pe("swapBaseOutAmount"),w("swapQuote2BaseFee"),M("baseVault"),M("quoteVault"),M("baseMint"),M("quoteMint"),M("lpMint"),M("openOrders"),M("marketId"),M("marketProgramId"),M("targetOrders"),M("withdrawQueue"),M("lpVault"),M("owner"),w("lpReserve"),J(w(),3,"padding")]),hd=v([w("accountType"),w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalsValue"),w("abortTradeFactor"),w("priceTickMultiplier"),w("priceTick"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),pe("swapBaseInAmount"),pe("swapQuoteOutAmount"),pe("swapQuoteInAmount"),pe("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),M("baseVault"),M("quoteVault"),M("baseMint"),M("quoteMint"),M("lpMint"),M("modelDataAccount"),M("openOrders"),M("marketId"),M("marketProgramId"),M("targetOrders"),M("owner"),J(w(),64,"padding")]),Is=v([V("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide"),w("otherAmountMin")]),Bs=v([V("instruction"),w("lpAmount"),w("baseAmountMin"),w("quoteAmountMin")]),Ey={4:vi,5:hd},Oc=v([w("fee")]);var xs=Se("Raydium_liquidity_instruction");function Nc(s){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:o,quoteAmountIn:i,fixedSide:r,otherAmountMin:a,modelDataPubKey:c=io}=s,u=Buffer.alloc(Is.span);Is.encode({instruction:3,baseAmountIn:me(o),quoteAmountIn:me(i),otherAmountMin:me(a),fixedSide:r==="base"?Z:pt},u);let l=[T({pubkey:Dn.TOKEN_PROGRAM_ID,isWritable:!1}),T({pubkey:new we.PublicKey(e.id)}),T({pubkey:new we.PublicKey(t.authority),isWritable:!1}),T({pubkey:new we.PublicKey(t.openOrders),isWritable:!1}),T({pubkey:new we.PublicKey(t.targetOrders)}),T({pubkey:new we.PublicKey(e.lpMint.address)}),T({pubkey:new we.PublicKey(t.vault.A)}),T({pubkey:new we.PublicKey(t.vault.B)})];return e.pooltype.includes("StablePool")&&l.push(T({pubkey:c})),l.push(T({pubkey:new we.PublicKey(e.marketId),isWritable:!1}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:new we.PublicKey(t.marketEventQueue),isWritable:!1})),new we.TransactionInstruction({programId:new we.PublicKey(e.programId),keys:l,data:u})}function Ss(s){let{poolInfo:e,poolKeys:t,userKeys:n,lpAmount:o,baseAmountMin:i,quoteAmountMin:r,modelDataPubKey:a=io}=s,c=nt(t),u=4;if(e.pooltype.includes("StablePool")&&(u=5),u===4||u===5){let l=Buffer.alloc(Bs.span);Bs.encode({instruction:4,lpAmount:me(o),baseAmountMin:me(i),quoteAmountMin:me(r)},l);let d=[T({pubkey:Dn.TOKEN_PROGRAM_ID,isWritable:!1}),T({pubkey:c.id}),T({pubkey:c.authority,isWritable:!1}),T({pubkey:c.openOrders}),T({pubkey:c.targetOrders}),T({pubkey:c.mintLp.address}),T({pubkey:c.vault.A}),T({pubkey:c.vault.B})];return u===5?d.push(T({pubkey:a})):(d.push(T({pubkey:c.id})),d.push(T({pubkey:c.id}))),d.push(T({pubkey:c.marketProgramId,isWritable:!1}),T({pubkey:c.marketId}),T({pubkey:c.marketBaseVault}),T({pubkey:c.marketQuoteVault}),T({pubkey:c.marketAuthority,isWritable:!1}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:c.marketEventQueue}),T({pubkey:c.marketBids}),T({pubkey:c.marketAsks})),new we.TransactionInstruction({programId:c.programId,keys:d,data:l})}return new we.TransactionInstruction({programId:c.programId,keys:[]})}function Ks({programId:s,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:o,coinMint:i,pcMint:r,coinVault:a,pcVault:c,withdrawQueue:u,ammTargetOrders:l,poolTempLp:d,marketProgramId:p,marketId:m,userWallet:f,userCoinVault:y,userPcVault:b,userLpVault:g,nonce:P,openTime:k,coinAmount:I,pcAmount:A,ammConfigId:h,feeDestinationId:B}){let S=v([V("instruction"),V("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),K=[{pubkey:Dn.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:Dn.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:we.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:Tt,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:h,isSigner:!1,isWritable:!1},{pubkey:B,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!0,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0}],x=Buffer.alloc(S.span);return S.encode({instruction:1,nonce:P,openTime:k,coinAmount:I,pcAmount:A},x),{instruction:new we.TransactionInstruction({keys:K,programId:s,data:x}),instructionType:Y.AmmV4CreatePool}}function Dy(s){let e=v([V("instruction"),V("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[T({pubkey:new we.PublicKey(s.id),isWritable:!1}),T({pubkey:new we.PublicKey(s.authority),isWritable:!1}),T({pubkey:new we.PublicKey(s.openOrders),isWritable:!1}),T({pubkey:new we.PublicKey(s.vault.A),isWritable:!1}),T({pubkey:new we.PublicKey(s.vault.B),isWritable:!1}),T({pubkey:new we.PublicKey(s.mintLp.address),isWritable:!1}),T({pubkey:new we.PublicKey(s.marketId),isWritable:!1}),T({pubkey:new we.PublicKey(s.marketEventQueue),isWritable:!1})];return new we.TransactionInstruction({programId:new we.PublicKey(s.programId),keys:n,data:t})}function Id({poolKeys:s,userKeys:e,amountIn:t,minAmountOut:n,modelDataPubKey:o=io},i){let r=nt(s),a=Buffer.alloc(ks.span);ks.encode({instruction:9,amountIn:me(t),minAmountOut:me(n)},a);let c=[T({pubkey:Dn.TOKEN_PROGRAM_ID,isWritable:!1}),T({pubkey:r.id}),T({pubkey:r.authority,isWritable:!1}),T({pubkey:r.openOrders})];return i===4&&c.push(T({pubkey:r.targetOrders})),c.push(T({pubkey:r.vault.A}),T({pubkey:r.vault.B})),i===5&&c.push(T({pubkey:o})),c.push(T({pubkey:r.marketProgramId,isWritable:!1}),T({pubkey:r.marketId}),T({pubkey:r.marketBids}),T({pubkey:r.marketAsks}),T({pubkey:r.marketEventQueue}),T({pubkey:r.marketBaseVault}),T({pubkey:r.marketQuoteVault}),T({pubkey:r.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1,isSigner:!0})),new we.TransactionInstruction({programId:r.programId,keys:c,data:a})}function Bd({poolKeys:s,userKeys:e,maxAmountIn:t,amountOut:n,modelDataPubKey:o=io},i){let r=nt(s),a=Buffer.alloc(Ts.span);Ts.encode({instruction:11,maxAmountIn:me(t),amountOut:me(n)},a);let c=[T({pubkey:Dn.TOKEN_PROGRAM_ID,isWritable:!1}),T({pubkey:r.id}),T({pubkey:r.authority,isWritable:!1}),T({pubkey:r.openOrders}),T({pubkey:r.targetOrders}),T({pubkey:r.vault.A}),T({pubkey:r.vault.B})];return i===5&&c.push(T({pubkey:o})),c.push(T({pubkey:r.marketProgramId,isWritable:!1}),T({pubkey:r.marketId}),T({pubkey:r.marketBids}),T({pubkey:r.marketAsks}),T({pubkey:r.marketEventQueue}),T({pubkey:r.marketBaseVault}),T({pubkey:r.marketQuoteVault}),T({pubkey:r.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1,isSigner:!0})),new we.TransactionInstruction({programId:r.programId,keys:c,data:a})}function xd(s,e,t,n,o,i,r,a,c,u){let l=v([V("instructionId"),w("amountIn"),w("minAmountOut")]),d=Buffer.alloc(l.span);l.encode({instructionId:16,amountIn:c,minAmountOut:u},d);let p=[{pubkey:Dn.TOKEN_PROGRAM_ID,isWritable:!1,isSigner:!1},{pubkey:e,isWritable:!0,isSigner:!1},{pubkey:t,isWritable:!1,isSigner:!1},{pubkey:n,isWritable:!0,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:r,isWritable:!0,isSigner:!1},{pubkey:a,isWritable:!1,isSigner:!0}];return new we.TransactionInstruction({programId:s,keys:p,data:d})}function Sd(s,e,t,n,o,i,r,a,c,u){let l=v([V("instructionId"),w("maxAmountIn"),w("amountOut")]),d=Buffer.alloc(l.span);l.encode({instructionId:17,maxAmountIn:c,amountOut:u},d);let p=[{pubkey:Dn.TOKEN_PROGRAM_ID,isWritable:!1,isSigner:!1},{pubkey:e,isWritable:!0,isSigner:!1},{pubkey:t,isWritable:!1,isSigner:!1},{pubkey:n,isWritable:!0,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:r,isWritable:!0,isSigner:!1},{pubkey:a,isWritable:!1,isSigner:!0}];return new we.TransactionInstruction({programId:s,keys:p,data:d})}function Or(s){let{poolKeys:e,version:t,userKeys:n,amountIn:o,amountOut:i,fixedSide:r}=s;if(t===4){if(r==="in")return xd(new we.PublicKey(e.programId),new we.PublicKey(e.id),new we.PublicKey(e.authority),new we.PublicKey(e.vault.A),new we.PublicKey(e.vault.B),n.tokenAccountIn,n.tokenAccountOut,n.owner,new Lr.default(o.toString()),new Lr.default(i.toString()));if(r==="out")return Sd(new we.PublicKey(e.programId),new we.PublicKey(e.id),new we.PublicKey(e.authority),new we.PublicKey(e.vault.A),new we.PublicKey(e.vault.B),n.tokenAccountIn,n.tokenAccountOut,n.owner,new Lr.default(o.toString()),new Lr.default(i.toString()));xs.logWithError("invalid params","params",s)}throw xs.logWithError("invalid version, only support pool v4","poolKeys.version",t),new Error("invalid version")}function Nr(s){let{poolKeys:e,version:t,userKeys:n,amountIn:o,amountOut:i,fixedSide:r}=s;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(r==="in")return Id(E(N({},a),{amountIn:o,minAmountOut:i}),t);if(r==="out")return Bd(E(N({},a),{maxAmountIn:o,amountOut:i}),t);xs.logWithError("invalid params","params",s)}throw xs.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function Wy({poolKeys:s,userKeys:e,startTime:t}){let n=Buffer.alloc(hs.span);hs.encode({instruction:0,nonce:5,startTime:me(t)},n);let o=nt(s),i=[T({pubkey:Dn.TOKEN_PROGRAM_ID,isWritable:!1}),T({pubkey:we.SystemProgram.programId,isWritable:!1}),T({pubkey:we.SYSVAR_RENT_PUBKEY,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.mintLp.address}),T({pubkey:o.mintA.address,isWritable:!1}),T({pubkey:o.mintB.address,isWritable:!1}),T({pubkey:o.vault.A,isWritable:!1}),T({pubkey:o.vault.B,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.targetOrders}),T({pubkey:e.lpTokenAccount}),T({pubkey:o.id,isWritable:!1}),T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId,isWritable:!1}),T({pubkey:e.payer,isSigner:!0})];return new we.TransactionInstruction({programId:o.programId,keys:i,data:n})}var ti=5e4,Kd=v([w("x"),w("y"),w("price")]),Cd=v([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),J(Kd,ti,"DataElement")]);function qy(s,e){return[0,ti-2]}function Uy(s){return[0,ti-2]}function Gy(s){return[0,ti-2]}function zy(s,e,t){let[n,o]=qy(e,t),i=n,r=o,a=0,c=e*s.multiplier/t;for(;i<=r;){if(a=Math.floor((r+i)/2),a===0||a>=ti-2)return[a,a,!1];let u=s.DataElement[a].x*s.multiplier/s.DataElement[a].y,l=s.DataElement[a-1].x*s.multiplier/s.DataElement[a-1].y,d=s.DataElement[a+1].x*s.multiplier/s.DataElement[a+1].y;if(c===u)return[a,a,!0];if(c===l)return[a-1,a-1,!0];if(c===d)return[a+1,a+1,!0];if(c<l)r=a-1;else{if(c>l&&c<u)return[a-1,a,!0];if(c>u&&c<d)return[a,a+1,!0];i=a+1}}return[a,a,!1]}function Mc(s,e,t){let[n,o,i]=zy(s,e,t);if(!i)return 0;if(n===o){let r=s.DataElement[n].x;return e*s.multiplier/r}else{let r=s.DataElement[n].x,a=s.DataElement[n].y,c=s.DataElement[o].x,u=s.DataElement[o].y,l=t*(c*a-r*u),d=r*l,p=(c-r)*(e*a-r*t)*u,m=d+p;return e*s.multiplier*l/m}}function ei(s,e,t){return e*s.multiplier/t}function Rd(s,e,t){return e*t/s.multiplier}function Xy(s,e){let[t,n]=Uy(e),o=t,i=n,r=0,a=e;for(;o<i;){if(r=Math.floor((i+o)/2),r<=0||r>ti-2)return[r,r,!1];let c=s.DataElement[r].x,u=s.DataElement[r-1].x,l=s.DataElement[r+1].x;if(a===c)return[r,r,!0];if(a===u)return[r-1,r-1,!0];if(a===l)return[r+1,r+1,!0];if(a<u)i=r-1;else{if(a>u&&a<c)return[r-1,r,!0];if(a>c&&a<l)return[r,r+1,!0];o=r+1}}return[r,r,!1]}function Yy(s,e){let[t,n]=Gy(e),o=t,i=n,r=0,a=e;for(;o<=i;){if(r=Math.floor((i+o)/2),r<=0||r>=ti-2)return[r,r,!1];let c=s.DataElement[r].y,u=s.DataElement[r-1].y,l=s.DataElement[r+1].y;if(a===c)return[r,r,!0];if(a===u)return[r-1,r-1,!0];if(a===l)return[r+1,r+1,!0];if(a<l)o=r+1;else{if(a<u&&a>c)return[r-1,r,!0];if(a<c&&a>l)return[r,r+1,!0];i=r-1}}return[r,r,!1]}function Ld(s,e,t,n){let o=n?e+t:e-t,[i,r,a]=Xy(s,o);if(!a)return[0,0,!1,a];if(i===r)return[s.DataElement[r].price,s.DataElement[r].y,!1,a];{let c=s.DataElement[i].x,u=s.DataElement[r].x,l=s.DataElement[i].price,d=s.DataElement[r].price,p=s.DataElement[i].y,m=s.DataElement[r].y;if(e>=c&&e<=u)return n?[d,m,!0,a]:[l,p,!0,a];{let f,y;return n?(f=l+(d-l)*(e-c)/(u-c),y=p-(o-c)*s.multiplier/d):(f=l+(d-l)*(e-c)/(u-c),y=m+(u-o)*s.multiplier/l),[f,y,!1,a]}}}function Hy(s,e,t,n){let o=n?e-t:e+t,[i,r,a]=Yy(s,o);if(!a)return[0,0,!1,a];if(i===r)return[s.DataElement[r].price,s.DataElement[r].x,!1,a];{let c=s.DataElement[i].x,u=s.DataElement[r].x,l=s.DataElement[i].price,d=s.DataElement[r].price,p=s.DataElement[i].y,m=s.DataElement[r].y;if(e>=m&&e<=p)return n?[d,u,!0,a]:[l,c,!0,a];{let f,y;return n?(f=l+(d-l)*(p-e)/(p-m),y=c+d*(p-o)/s.multiplier):(f=l+(d-l)*(p-e)/(p-m),y=u-l*(o-m)/s.multiplier),[f,y,!1,a]}}}function Qy(s,e){let t=Ld(s,e,0,!1);return t[3]?t[0]:0}function Fc(s,e,t,n){let o=Mc(s,e,t),i=ei(s,e,o),r=ei(s,t,o),a=ei(s,n,o),c=!0,[u,l,d,p]=Ld(s,i,a,c);if(!p)return 0;if(d)return n*s.multiplier/u;{let m=r-l;return Rd(s,m,o)}}function vc(s,e,t,n){let o=Mc(s,e,t),i=ei(s,e,o),r=ei(s,t,o),a=ei(s,n,o),c=!1,[u,l,d,p]=Hy(s,r,a,c);if(!p)return 0;if(d)return n*u/s.multiplier;{let m=i-l;return Rd(s,m,o)}}function Od(s){let e=Cd.decode(s);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function _c(s,e,t,n){let o=Qy(s,ei(s,e,Mc(s,e,t)))/s.multiplier;return n?o:1/o}var Mr=class{constructor({connection:e,modelDataPubKey:t=io}){this._layoutData={accountType:0,status:0,multiplier:0,validDataCount:0,DataElement:[]};this.connection=e,this.modelDataPubKey=t}get stableModelData(){return this._layoutData}async initStableModelLayout(){if(this._layoutData.validDataCount===0&&this.connection){let e=await this.connection.getAccountInfo(this.modelDataPubKey);e&&(this._layoutData=Od(e==null?void 0:e.data))}}};var Fd=require("@solana/web3.js"),Fr=re(require("decimal.js")),vd=require("@solana/spl-token");var Nd=require("@solana/web3.js");var Zy=Se("Raydium_liquidity_serum");function Md({programId:s,marketId:e}){let t=[e.toBuffer()],n=0,o;for(;n<100;){try{let i=t.concat(Buffer.from([n]),Buffer.alloc(7));o=Nd.PublicKey.createProgramAddressSync(i,s)}catch(i){if(i instanceof TypeError)throw i;n++;continue}return{publicKey:o,nonce:n}}throw Zy.logWithError("unable to find a viable program address nonce","params",{programId:s,marketId:e}),new Error("unable to find a viable program address nonce")}function vr({programId:s}){let{publicKey:e}=ae([Buffer.from("amm_config_account_seed","utf-8")],s);return e}function So({name:s,programId:e,marketId:t}){let{publicKey:n}=ae([e.toBuffer(),t.toBuffer(),Buffer.from(s,"utf-8")],e);return n}function _d({programId:s,marketId:e}){let{publicKey:t}=ae([s.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],s);return t}function Cs({programId:s}){return ae([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],s)}function Rs({version:s,marketVersion:e,marketId:t,baseMint:n,quoteMint:o,baseDecimals:i,quoteDecimals:r,programId:a,marketProgramId:c}){let u=So({name:"amm_associated_seed",programId:a,marketId:t}),l=So({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:d,nonce:p}=Cs({programId:a}),m=So({name:"coin_vault_associated_seed",programId:a,marketId:t}),f=So({name:"pc_vault_associated_seed",programId:a,marketId:t}),y=So({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=_d({programId:a,marketId:t}),g=So({name:"target_associated_seed",programId:a,marketId:t}),P=So({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:k}=Md({programId:c,marketId:t});return{id:u,baseMint:n,quoteMint:o,lpMint:l,baseDecimals:i,quoteDecimals:r,lpDecimals:i,version:s,programId:a,authority:d,nonce:p,baseVault:m,quoteVault:f,lpVault:y,openOrders:b,targetOrders:g,withdrawQueue:P,marketVersion:e,marketProgramId:c,marketId:t,marketAuthority:k,lookupTableAccount:Fd.PublicKey.default,configId:vr({programId:a})}}var Vc={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},_r=s=>{let e={},t=vd.TOKEN_PROGRAM_ID.toBase58();return Object.keys(s).map(n=>{let o=s[n],[i,r]=[o.baseMint.toBase58(),o.quoteMint.toBase58()];e[n]={id:n,version:4,status:o.status.toNumber(),programId:o.programId.toBase58(),mintA:Bt({address:i,programId:t,decimals:o.baseDecimal.toNumber()}),mintB:Bt({address:r,programId:t,decimals:o.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:o.poolPrice.toNumber(),mintAmountA:new Fr.default(o.mintAAmount.toString()).div(10**o.baseDecimal.toNumber()).toNumber(),mintAmountB:new Fr.default(o.mintBAmount.toString()).div(10**o.quoteDecimal.toNumber()).toNumber(),baseReserve:o.baseReserve,quoteReserve:o.quoteReserve,feeRate:new Fr.default(o.tradeFeeNumerator.toString()).div(o.tradeFeeDenominator.toString()).toNumber(),openTime:o.poolOpenTime.toString(),tvl:0,day:Vc,week:Vc,month:Vc,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:o.marketId.toBase58(),configId:vr({programId:o.programId}).toBase58(),lpPrice:0,lpAmount:new Fr.default(o.lpReserve.toString()).div(10**Math.min(o.baseDecimal.toNumber(),o.quoteDecimal.toNumber())).toNumber(),lpMint:Bt({address:o.lpMint.toBase58(),programId:t,decimals:Math.min(o.baseDecimal.toNumber(),o.quoteDecimal.toNumber())}),burnPercent:0,feeOn:"Both",hasDynamicFee:!1,tips:[],launchMigratePool:!1}}),e};var He=re(require("bn.js")),Xe=re(require("decimal.js"));var Ec=require("@solana/spl-token"),Vi=require("@solana/web3.js"),Ei=re(require("bn.js"));var rn=require("@solana/web3.js"),_i=require("@solana/spl-token");function jy(s="accountFlags"){let e=new cr(s);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var Ls=v([xe(5),jy("accountFlags"),M("ownAddress"),w("vaultSignerNonce"),M("baseMint"),M("quoteMint"),M("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),M("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),M("requestQueue"),M("eventQueue"),M("bids"),M("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),xe(7)]);function Vd({programId:s,marketInfo:e}){let t=v([V("version"),Qe("instruction"),w("baseLotSize"),w("quoteLotSize"),ut("feeRateBps"),w("vaultSignerNonce"),w("quoteDustThreshold")]),n=[{pubkey:e.id,isSigner:!1,isWritable:!0},{pubkey:e.requestQueue,isSigner:!1,isWritable:!0},{pubkey:e.eventQueue,isSigner:!1,isWritable:!0},{pubkey:e.bids,isSigner:!1,isWritable:!0},{pubkey:e.asks,isSigner:!1,isWritable:!0},{pubkey:e.baseVault,isSigner:!1,isWritable:!0},{pubkey:e.quoteVault,isSigner:!1,isWritable:!0},{pubkey:e.baseMint,isSigner:!1,isWritable:!1},{pubkey:e.quoteMint,isSigner:!1,isWritable:!1},{pubkey:e.authority?e.quoteMint:rn.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),o=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},o),new rn.TransactionInstruction({keys:n,programId:s,data:o})}async function Vr({connection:s,wallet:e,marketInfo:t}){var r,a,c,u,l,d,p,m;let n=new rn.Transaction,o=await s.getMinimumBalanceForRentExemption(165);n.add(rn.SystemProgram.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:o,space:165,programId:_i.TOKEN_PROGRAM_ID}),rn.SystemProgram.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:o,space:165,programId:_i.TOKEN_PROGRAM_ID}),(0,_i.createInitializeAccountInstruction)(t.baseVault.publicKey,t.baseMint,t.vaultOwner),(0,_i.createInitializeAccountInstruction)(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner),rn.SystemProgram.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await s.getMinimumBalanceForRentExemption(Ls.span),space:Ls.span,programId:t.programId}));let i=new rn.Transaction;return i.add(rn.SystemProgram.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:t.lowestFeeMarket?6208320:await s.getMinimumBalanceForRentExemption((r=t.requestQueueSpace)!=null?r:5120+12),space:t.lowestFeeMarket?764:(a=t.requestQueueSpace)!=null?a:5120+12,programId:t.programId}),rn.SystemProgram.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:t.lowestFeeMarket?79594560:await s.getMinimumBalanceForRentExemption((c=t.eventQueueSpace)!=null?c:262144+12),space:t.lowestFeeMarket?11308:(u=t.eventQueueSpace)!=null?u:262144+12,programId:t.programId}),rn.SystemProgram.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:t.lowestFeeMarket?101977920:await s.getMinimumBalanceForRentExemption((l=t.orderbookQueueSpace)!=null?l:65536+12),space:t.lowestFeeMarket?14524:(d=t.orderbookQueueSpace)!=null?d:65536+12,programId:t.programId}),rn.SystemProgram.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:t.lowestFeeMarket?101977920:await s.getMinimumBalanceForRentExemption((p=t.orderbookQueueSpace)!=null?p:65536+12),space:t.lowestFeeMarket?14524:(m=t.orderbookQueueSpace)!=null?m:65536+12,programId:t.programId}),Vd({programId:t.programId,marketInfo:{id:t.id.publicKey,requestQueue:t.requestQueue.publicKey,eventQueue:t.eventQueue.publicKey,bids:t.bids.publicKey,asks:t.asks.publicKey,baseVault:t.baseVault.publicKey,quoteVault:t.quoteVault.publicKey,baseMint:t.baseMint,quoteMint:t.quoteMint,baseLotSize:t.baseLotSize,quoteLotSize:t.quoteLotSize,feeRateBps:t.feeRateBps,vaultSignerNonce:t.vaultSignerNonce,quoteDustThreshold:t.quoteDustThreshold}})),[{transaction:n,signer:[],instructionTypes:[Y.CreateAccount,Y.CreateAccount,Y.InitAccount,Y.InitAccount]},{transaction:i,signer:[],instructionTypes:[Y.CreateAccount,Y.CreateAccount,Y.CreateAccount,Y.CreateAccount,Y.CreateAccount,Y.InitMarket]}]}var Di=class extends st{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:o,dexProgramId:i,requestQueueSpace:r,eventQueueSpace:a,orderbookQueueSpace:c,lowestFeeMarket:u,assignSeed:l,txVersion:d,computeBudgetConfig:p,txTipConfig:m,feePayer:f}){let y=this.scope.ownerPubKey,b=l?`${e.mint.toBase58().slice(0,10)}-${t.mint.toBase58().slice(0,10)}-${l}`:void 0,g=ct({fromPublicKey:y,programId:i,assignSeed:b&&`${b}-market`}),P=ct({fromPublicKey:y,programId:i,assignSeed:b&&`${b}-request`}),k=ct({fromPublicKey:y,programId:i,assignSeed:b&&`${b}-event`}),I=ct({fromPublicKey:y,programId:i,assignSeed:b&&`${b}-bids`}),A=ct({fromPublicKey:y,programId:i,assignSeed:b&&`${b}-asks`}),h=ct({fromPublicKey:y,programId:Ec.TOKEN_PROGRAM_ID,assignSeed:b&&`${b}-baseVault`}),B=ct({fromPublicKey:y,programId:Ec.TOKEN_PROGRAM_ID,assignSeed:b&&`${b}-quoteVault`}),S=0,K=new Ei.default(100);function x(){let D=new Ei.default(0);for(;;)try{return{vaultOwner:Vi.PublicKey.createProgramAddressSync([g.publicKey.toBuffer(),D.toArrayLike(Buffer,"le",8)],i),vaultSignerNonce:D}}catch{if(D.iaddn(1),D.gt(new Ei.default(25555)))throw Error("find vault owner error")}}let{vaultOwner:C,vaultSignerNonce:L}=x(),O=new Ei.default(Math.round(10**e.decimals*n)),R=new Ei.default(Math.round(n*10**t.decimals*o));if(O.eq(Z))throw Error("lot size is too small");if(R.eq(Z))throw Error("tick size or lot size is too small");let F=await Vr({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:i,id:g,baseMint:e.mint,quoteMint:t.mint,baseVault:h,quoteVault:B,vaultOwner:C,requestQueue:P,eventQueue:k,bids:I,asks:A,feeRateBps:S,quoteDustThreshold:K,vaultSignerNonce:L,baseLotSize:O,quoteLotSize:R,requestQueueSpace:r,eventQueueSpace:a,orderbookQueueSpace:c,lowestFeeMarket:u}}),W=this.createTxBuilder(f);W.addInstruction({instructions:F[0].transaction.instructions,signers:F[0].signer});for await(let D of F.slice(1,F.length))W.addInstruction({instructions:D.transaction.instructions,signers:D.signer,instructionTypes:D.instructionTypes});return d===0?W.sizeCheckBuildV0({computeBudgetConfig:p,address:{marketId:g.publicKey,requestQueue:P.publicKey,eventQueue:k.publicKey,bids:I.publicKey,asks:A.publicKey,baseVault:h.publicKey,quoteVault:B.publicKey,baseMint:new Vi.PublicKey(e.mint),quoteMint:new Vi.PublicKey(t.mint)}}):W.sizeCheckBuild({computeBudgetConfig:p,address:{marketId:g.publicKey,requestQueue:P.publicKey,eventQueue:k.publicKey,bids:I.publicKey,asks:A.publicKey,baseVault:h.publicKey,quoteVault:B.publicKey,baseMint:new Vi.PublicKey(e.mint),quoteMint:new Vi.PublicKey(t.mint)}})}};var Dr=class extends st{constructor(t){super(t);this.stableLayout=new Mr({connection:this.scope.connection,modelDataPubKey:this.scope.cluster==="mainnet"?void 0:Tn.MODEL_DATA_PUBKEY})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:o,baseIn:i}){let r=new He.default(new Xe.default(n).mul(10**t[i?"mintA":"mintB"].decimals).toFixed(0)),a=gi(t[i?"mintB":"mintA"]),[c,u]=[new He.default(new Xe.default(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new He.default(new Xe.default(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new He.default(new Xe.default(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,Xe.default.ROUND_DOWN));this.logDebug("baseReserve:",c.toString(),"quoteReserve:",u.toString()),this.logDebug("tokenIn:",i?t.mintA.symbol:t.mintB.symbol,"amountIn:",r.toString(),"anotherToken:",i?t.mintB.symbol:t.mintA.symbol,"slippage:",`${o.toSignificant()}%`,"baseReserve",c.toString(),"quoteReserve",u.toString());let d=i?"base":"quote";this.logDebug("input side:",d);let p=Z;r.isZero()||(p=d==="base"?Er(r.mul(u),c):Er(r.mul(c),u)),this.logDebug("amountRaw:",p.toString(),"lpAmount:",l.toString());let m=Er(r.mul(l),d==="base"?c:u);this.logDebug("liquidity:",m.toString());let f=new at(new He.default(1)).add(o),y=new at(new He.default(1)).sub(o),b=f.mul(p).quotient,g=y.mul(p).quotient,P=new Ce(a,p),k=new Ce(a,b),I=new Ce(a,g);return this.logDebug("anotherAmount:",P.toFixed(),"maxAnotherAmount:",k.toFixed()),{anotherAmount:P,maxAnotherAmount:k,minAnotherAmount:I,liquidity:m}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,poolKeys:o,amountInA:i,amountInB:r,otherAmountMin:a,fixedSide:c,config:u,txVersion:l,computeBudgetConfig:d,txTipConfig:p,feePayer:m}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",r),(i.isZero()||r.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:r.toFixed()});let{account:f}=this.scope,{bypassAssociatedCheck:y,checkCreateATAOwner:b}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),[g,P]=[i.token,r.token],k=await f.getCreatedTokenAccount({mint:g.mint,associatedOnly:!1}),I=await f.getCreatedTokenAccount({mint:P.mint,associatedOnly:!1});!k&&!I&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",f.tokenAccounts);let A=await f.getCreatedTokenAccount({mint:new mt.PublicKey(n.lpMint.address)}),h=[g,P],B=[k,I],S=[i.raw,r.raw],K=i.token.mint.toBase58()===n.mintA.address?"base":"quote",x="base";["quote","base"].includes(K)||this.logAndCreateError("invalid fixedSide","fixedSide",c),K==="quote"?(h.reverse(),B.reverse(),S.reverse(),x=c==="a"?"quote":"base"):K==="base"&&(x=c==="a"?"base":"quote");let[C,L]=h,[O,R]=B,[F,W]=S,D=o!=null?o:await this.getAmmPoolKeys(n.id),X=this.createTxBuilder(m),ce=await f.handleTokenAccount({side:"in",amount:F,mint:C.mint,tokenAccount:O,bypassAssociatedCheck:y,checkCreateATAOwner:b}),{tokenAccount:$}=ce,H=tt(ce,["tokenAccount"]);X.addInstruction(H);let Ie=await f.handleTokenAccount({side:"in",amount:W,mint:L.mint,tokenAccount:R,bypassAssociatedCheck:y,checkCreateATAOwner:b}),{tokenAccount:oe}=Ie,ue=tt(Ie,["tokenAccount"]);X.addInstruction(ue);let De=await f.handleTokenAccount({side:"out",amount:0,mint:new mt.PublicKey(n.lpMint.address),tokenAccount:A,bypassAssociatedCheck:y,checkCreateATAOwner:b}),{tokenAccount:te}=De,ge=tt(De,["tokenAccount"]);return X.addInstruction(ge),X.addInstruction({instructions:[Nc({poolInfo:n,poolKeys:D,userKeys:{baseTokenAccount:$,quoteTokenAccount:oe,lpTokenAccount:te,owner:this.scope.ownerPubKey},baseAmountIn:F,quoteAmountIn:W,otherAmountMin:a.raw,fixedSide:x})],instructionTypes:[n.pooltype.includes("StablePool")?Y.AmmV5AddLiquidity:Y.AmmV4AddLiquidity],lookupTableAddress:D.lookupTableAccount?[D.lookupTableAccount]:[]}),X.addCustomComputeBudget(d),X.addTipInstruction(p),l===0?await X.buildV0():X.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,poolKeys:o,lpAmount:i,baseAmountMin:r,quoteAmountMin:a,config:c,txVersion:u,computeBudgetConfig:l,txTipConfig:d,feePayer:p}=t,m=o!=null?o:await this.getAmmPoolKeys(n.id),[f,y,b]=[new mt.PublicKey(n.mintA.address),new mt.PublicKey(n.mintB.address),new mt.PublicKey(n.lpMint.address)];this.logDebug("lpAmount:",i),this.logDebug("baseAmountMin:",r),this.logDebug("quoteAmountMin:",a),i.isZero()&&this.logAndCreateError("amount must greater than zero","lpAmount",i.toString());let{account:g}=this.scope,P=await g.getCreatedTokenAccount({mint:b,associatedOnly:!1});P||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",g.tokenAccounts);let k=await g.getCreatedTokenAccount({mint:f}),I=await g.getCreatedTokenAccount({mint:y}),A=this.createTxBuilder(p),{bypassAssociatedCheck:h,checkCreateATAOwner:B}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},c),L=await g.handleTokenAccount({side:"out",amount:0,mint:f,tokenAccount:k,bypassAssociatedCheck:h,checkCreateATAOwner:B}),{tokenAccount:S}=L,K=tt(L,["tokenAccount"]);A.addInstruction(K);let O=await g.handleTokenAccount({side:"out",amount:0,mint:y,tokenAccount:I,bypassAssociatedCheck:h,checkCreateATAOwner:B}),{tokenAccount:x}=O,C=tt(O,["tokenAccount"]);return A.addInstruction(C),A.addInstruction({instructions:[Ss({poolInfo:n,poolKeys:m,userKeys:{lpTokenAccount:P,baseTokenAccount:S,quoteTokenAccount:x,owner:this.scope.ownerPubKey},lpAmount:i,baseAmountMin:r,quoteAmountMin:a})],lookupTableAddress:m.lookupTableAccount?[m.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?Y.AmmV5RemoveLiquidity:Y.AmmV4RemoveLiquidity]}),A.addCustomComputeBudget(l),A.addTipInstruction(d),u===0?await A.buildV0():A.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:o,createPositionInfo:i,farmInfo:r,userFarmLpAmount:a,base:c,computeBudgetConfig:u,payer:l,userAuxiliaryLedgers:d,tokenProgram:p=_t.TOKEN_PROGRAM_ID,checkCreateATAOwner:m=!0,getEphemeralSigners:f,txVersion:y,feePayer:b}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let g=this.createTxBuilder(b),P={};for(let D of this.scope.account.tokenAccountRawInfos)(P[D.accountInfo.mint.toString()]===void 0||ne(this.scope.ownerPubKey,D.accountInfo.mint,_t.TOKEN_PROGRAM_ID).publicKey.equals(D.pubkey))&&(P[D.accountInfo.mint.toString()]=D.pubkey);let k=P[t.lpMint.address];if(k===void 0)throw Error("find lp account error in trade accounts");let I=o.add(a!=null?a:new He.default(0)),A=t.mintA.address===We.WSOL.mint.toString(),h=t.mintB.address===We.WSOL.mint.toString(),{account:B,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:_t.TOKEN_PROGRAM_ID,mint:new mt.PublicKey(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!0,checkCreateATAOwner:m});if(g.addInstruction(S||{}),B===void 0)throw new Error("base token account not found");let{account:K,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:_t.TOKEN_PROGRAM_ID,mint:new mt.PublicKey(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!0,checkCreateATAOwner:m});if(g.addInstruction(x||{}),K===void 0)throw new Error("quote token account not found");if(P[t.mintA.address]=B,P[t.mintB.address]=K,r!==void 0&&!(a!=null&&a.isZero())){let D=dn[r.programId],X=zt({programId:new mt.PublicKey(r.programId),poolId:new mt.PublicKey(r.id),owner:this.scope.ownerPubKey,version:D}),$,H=await this.scope.connection.getAccountInfo(X);if(H&&($=$o(D).decode(H.data)),D!==6&&!$){let{instruction:De,instructionType:_e}=Li({id:new mt.PublicKey(r.id),programId:new mt.PublicKey(r.programId),version:D,ledger:X,owner:this.scope.ownerPubKey});g.addInstruction({instructions:[De],instructionTypes:[_e]})}let oe=[];for(let De of r.rewardInfos){let _e=De.mint.address===We.WSOL.mint.toString();if(P[De.mint.address])oe.push(P[De.mint.address]);else{let{account:Te,instructionParams:le}=await this.scope.account.getOrCreateTokenAccount({mint:new mt.PublicKey(De.mint.address),tokenProgram:p,owner:this.scope.ownerPubKey,skipCloseAccount:!_e,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:m});Te||this.logAndCreateError("farm reward account not found:",De.mint.address),le&&g.addInstruction(le),oe.push(Te)}}let ue=(await this.scope.api.fetchFarmKeysById({ids:r.id}))[0],te={userAuxiliaryLedgers:d,amount:a,owner:this.scope.ownerPubKey,farmInfo:r,farmKeys:ue,lpAccount:k,rewardAccounts:oe},ge=dn[r.programId],ce=ge===6?Oi(te):ge===5?Ni(te):Mi(te),Ie={3:Y.FarmV3Withdraw,5:Y.FarmV5Withdraw,6:Y.FarmV6Withdraw};g.addInstruction({instructions:[ce],instructionTypes:[Ie[ge]]})}let C=await this.getAmmPoolKeys(t.id),L=Ss({poolInfo:t,poolKeys:C,userKeys:{lpTokenAccount:k,baseTokenAccount:B,quoteTokenAccount:K,owner:this.scope.ownerPubKey},lpAmount:I,baseAmountMin:0,quoteAmountMin:0});g.addInstruction({instructions:[L],instructionTypes:[t.pooltype.includes("StablePool")?Y.AmmV5RemoveLiquidity:Y.AmmV4RemoveLiquidity],lookupTableAddress:C.lookupTableAccount?[C.lookupTableAccount]:[]});let[O,R]=t.mintA.address===n.mintA.address?[B,K]:[K,B],F=await this.scope.clmm.getClmmPoolKeys(n.id),W=await ke.openPositionFromBaseInstructions(E(N({poolInfo:n,poolKeys:F,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:O,tokenAccountB:R},withMetadata:"create"},i),{liquidity:new He.default(0),base:c,getEphemeralSigners:f}));return g.addInstruction({instructions:[...W.instructions],signers:W.signers,instructionTypes:[...W.instructionTypes],lookupTableAddress:F.lookupTableAccount?[F.lookupTableAccount]:[]}),y===0?g.sizeCheckBuildV0({computeBudgetConfig:u}):g.sizeCheckBuild({computeBudgetConfig:u})}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:o,quoteMintInfo:i,baseAmount:r,quoteAmount:a,startTime:c,ownerInfo:u,associatedOnly:l=!1,checkCreateATAOwner:d=!1,tokenProgram:p,txVersion:m,feeDestinationId:f,computeBudgetConfig:y,txTipConfig:b,feePayer:g}){var R;let P=u.feePayer||((R=this.scope.owner)==null?void 0:R.publicKey),k=u.useSOLBalance&&o.mint.equals(_t.NATIVE_MINT),I=u.useSOLBalance&&i.mint.equals(_t.NATIVE_MINT),A=this.createTxBuilder(g),{account:h,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:k?{payer:P,amount:r}:void 0,notUseTokenAccount:k,skipCloseAccount:!k,associatedOnly:k?!1:l,checkCreateATAOwner:d});A.addInstruction(B||{});let{account:S,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:I?{payer:P,amount:a}:void 0,notUseTokenAccount:I,skipCloseAccount:!I,associatedOnly:I?!1:l,checkCreateATAOwner:d});if(A.addInstruction(K||{}),h===void 0||S===void 0)throw Error("you don't has some token account");let x=Rs({version:4,marketVersion:3,marketId:n.marketId,baseMint:o.mint,quoteMint:i.mint,baseDecimals:o.decimals,quoteDecimals:i.decimals,programId:t,marketProgramId:n.programId}),C={programId:t,ammId:x.id,ammAuthority:x.authority,ammOpenOrders:x.openOrders,lpMint:x.lpMint,coinMint:x.baseMint,pcMint:x.quoteMint,coinVault:x.baseVault,pcVault:x.quoteVault,withdrawQueue:x.withdrawQueue,ammTargetOrders:x.targetOrders,poolTempLp:x.lpVault,marketProgramId:x.marketProgramId,marketId:x.marketId,ammConfigId:x.configId,feeDestinationId:f},{instruction:L,instructionType:O}=Ks(E(N({},C),{userWallet:this.scope.ownerPubKey,userCoinVault:h,userPcVault:S,userLpVault:ne(this.scope.ownerPubKey,x.lpMint,p).publicKey,nonce:x.nonce,openTime:c,coinAmount:r,pcAmount:a}));return A.addInstruction({instructions:[L],instructionTypes:[O]}),A.addCustomComputeBudget(y),A.addTipInstruction(b),A.versionBuild({txVersion:m,extInfo:{address:C}})}async createMarketAndPoolV4({programId:t=fi,marketProgram:n=Wa,feeDestinationId:o=qa,tokenProgram:i,baseMintInfo:r,quoteMintInfo:a,baseAmount:c,quoteAmount:u,startTime:l,ownerInfo:d,lowestFeeMarket:p,assignSeed:m,associatedOnly:f=!1,checkCreateATAOwner:y=!1,lotSize:b=1,tickSize:g=.01,txVersion:P,computeBudgetConfig:k,txTipConfig:I,feePayer:A}){var ji,Js,$i;let h=this.scope.ownerPubKey,B=d.feePayer||((ji=this.scope.owner)==null?void 0:ji.publicKey),S=d.useSOLBalance&&r.mint.equals(_t.NATIVE_MINT),K=d.useSOLBalance&&a.mint.equals(_t.NATIVE_MINT),x=m?`${r.mint.toBase58().slice(0,7)}-${a.mint.toBase58().slice(0,7)}-${m}`:void 0,C=ct({fromPublicKey:h,programId:n,assignSeed:x&&`${x}-market`}),L=ct({fromPublicKey:h,programId:n,assignSeed:x&&`${x}-request`}),O=ct({fromPublicKey:h,programId:n,assignSeed:x&&`${x}-event`}),R=ct({fromPublicKey:h,programId:n,assignSeed:x&&`${x}-bids`}),F=ct({fromPublicKey:h,programId:n,assignSeed:x&&`${x}-asks`}),W=ct({fromPublicKey:h,programId:_t.TOKEN_PROGRAM_ID,assignSeed:x&&`${x}-baseVault`}),D=ct({fromPublicKey:h,programId:_t.TOKEN_PROGRAM_ID,assignSeed:x&&`${x}-quoteVault`}),X=0,$=new He.default(100);function H(){let Jt=new He.default(0);for(;;)try{return{vaultOwner:mt.PublicKey.createProgramAddressSync([C.publicKey.toBuffer(),Jt.toArrayLike(Buffer,"le",8)],n),vaultSignerNonce:Jt}}catch{if(Jt.iaddn(1),Jt.gt(new He.default(25555)))throw Error("find vault owner error")}}let{vaultOwner:oe,vaultSignerNonce:ue}=H(),te=new He.default(Math.round(10**r.decimals*b)),ge=new He.default(Math.round(b*10**a.decimals*g));if(te.eq(Z))throw Error("lot size is too small");if(ge.eq(Z))throw Error("tick size or lot size is too small");let ce=await Vr({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:n,vaultOwner:oe,baseMint:r.mint,quoteMint:a.mint,id:C,baseVault:W,quoteVault:D,requestQueue:L,eventQueue:O,bids:R,asks:F,feeRateBps:X,quoteDustThreshold:$,vaultSignerNonce:ue,baseLotSize:te,quoteLotSize:ge,lowestFeeMarket:p}}),Ie=this.createTxBuilder(A);Ie.addInstruction({instructions:ce[0].transaction.instructions,signers:ce[0].signer});for await(let Jt of ce.slice(1,ce.length))Ie.addInstruction({instructions:Jt.transaction.instructions,signers:Jt.signer,instructionTypes:Jt.instructionTypes});let{account:De,instructionParams:_e}=await this.scope.account.getOrCreateTokenAccount({mint:r.mint,owner:this.scope.ownerPubKey,createInfo:S?{payer:B,amount:c}:void 0,notUseTokenAccount:S,skipCloseAccount:!S,associatedOnly:S?!1:f,checkCreateATAOwner:y,assignSeed:S&&x?`${x}-wsol`:void 0});Ie.addInstruction(_e||{});let{account:Te,instructionParams:le}=await this.scope.account.getOrCreateTokenAccount({mint:a.mint,owner:this.scope.ownerPubKey,createInfo:K?{payer:B,amount:u}:void 0,notUseTokenAccount:K,skipCloseAccount:!K,associatedOnly:K?!1:f,checkCreateATAOwner:y,assignSeed:K&&x?`${x}-wsol`:void 0});if(Ie.addInstruction(le||{}),De===void 0)throw Error("you don't has base token account");if(Te===void 0)throw Error("you don't has quote token account");let Me=Rs({version:4,marketVersion:3,marketId:C.publicKey,baseMint:r.mint,quoteMint:a.mint,baseDecimals:r.decimals,quoteDecimals:a.decimals,programId:t,marketProgramId:n}),Yt={programId:t,ammId:Me.id,ammAuthority:Me.authority,ammOpenOrders:Me.openOrders,lpMint:Me.lpMint,coinMint:Me.baseMint,pcMint:Me.quoteMint,coinVault:Me.baseVault,pcVault:Me.quoteVault,withdrawQueue:Me.withdrawQueue,ammTargetOrders:Me.targetOrders,poolTempLp:Me.lpVault,marketProgramId:Me.marketProgramId,marketId:Me.marketId,ammConfigId:Me.configId,feeDestinationId:o},{instruction:rt,instructionType:qn}=Ks(E(N({},Yt),{userWallet:this.scope.ownerPubKey,userCoinVault:De,userPcVault:Te,userLpVault:ne(this.scope.ownerPubKey,Me.lpMint,i).publicKey,nonce:Me.nonce,openTime:l,coinAmount:c,pcAmount:u}));Ie.addInstruction({instructions:[rt],instructionTypes:[qn]});let si=S||K?[((Js=_e==null?void 0:_e.instructions)==null?void 0:Js[0])||(($i=le==null?void 0:le.instructions)==null?void 0:$i[0])].filter(Jt=>!!Jt):void 0;return P===0?Ie.sizeCheckBuildV0({computeBudgetConfig:k,splitIns:si,address:N({requestQueue:L.publicKey,eventQueue:O.publicKey,bids:R.publicKey,asks:F.publicKey,baseVault:W.publicKey,quoteVault:D.publicKey,baseMint:new mt.PublicKey(r.mint),quoteMint:new mt.PublicKey(a.mint)},Yt)}):Ie.sizeCheckBuild({computeBudgetConfig:k,splitIns:si,address:N({requestQueue:L.publicKey,eventQueue:O.publicKey,bids:R.publicKey,asks:F.publicKey,baseVault:W.publicKey,quoteVault:D.publicKey,baseMint:new mt.PublicKey(r.mint),quoteMint:new mt.PublicKey(a.mint)},Yt)})}async getCreatePoolFee({programId:t}){let n=vr({programId:t}),o=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(o===null)throw Error("get config account error");return Oc.decode(o.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:o,mintOut:i,slippage:r}){let[a,c]=[o.toString(),i.toString()];if(a!==t.mintA.address&&a!==t.mintB.address)throw new Error("toke not match");if(c!==t.mintA.address&&c!==t.mintB.address)throw new Error("toke not match");let{baseReserve:u,quoteReserve:l}=t,d=[u,l],p=[t.mintA.decimals,t.mintB.decimals],m=a==t.mintA.address?"base":"quote";m==="quote"&&(d.reverse(),p.reverse());let[f,y]=d,[b,g]=p,P=t.version===4,k;if(P)k=new Xe.default(y.toString()).div(10**g).div(new Xe.default(f.toString()).div(10**b));else{let O=_c(this.stableLayout.stableModelData,u.toNumber(),l.toNumber(),!1);m==="quote"?k=new Xe.default(1e6).div(O*1e6):k=new Xe.default(O*1e6).div(1e6)}let I=n,A=new He.default(0),h=new He.default(0);if(!I.isZero())if(P){h=xn(I.mul(ws),Rr);let O=I.sub(h),R=f.add(O);A=y.mul(O).div(R)}else{h=I.mul(new He.default(2)).div(new He.default(1e4));let O=I.sub(h);m==="quote"?A=new He.default(Fc(this.stableLayout.stableModelData,l.toNumber(),u.toNumber(),O.toNumber())):A=new He.default(vc(this.stableLayout.stableModelData,l.toNumber(),u.toNumber(),O.toNumber()))}let B=new He.default(new Xe.default(A.toString()).mul(1-r).toFixed(0)),S=A,K=B,x=new Xe.default(A.toString()).div(new Xe.default(I.sub(h).toString()).toFixed(0));!I.isZero()&&!A.isZero()&&(x=new Xe.default(A.toString()).div(10**g).div(new Xe.default(I.sub(h).toString()).div(10**b)));let C=k.sub(x).div(k).mul(100);return{amountOut:S,minAmountOut:K,currentPrice:k,executionPrice:x,priceImpact:C,fee:h}}computeAmountIn({poolInfo:t,amountOut:n,mintIn:o,mintOut:i,slippage:r}){let{baseReserve:a,quoteReserve:c}=t;o.toString()!==t.mintA.address&&o.toString()!==t.mintB.address&&this.logAndCreateError("mintIn does not match pool"),i.toString()!==t.mintA.address&&i.toString()!==t.mintB.address&&this.logAndCreateError("mintOut does not match pool"),this.logDebug("baseReserve:",a.toString()),this.logDebug("quoteReserve:",c.toString());let u=o.toString()===t.mintA.address,[l,d]=u?[t.mintA,t.mintB]:[t.mintB,t.mintA];this.logDebug("currencyOut:",d.symbol||d.address),this.logDebug("amountOut:",new Xe.default(n.toString()).div(10**d.decimals).toDecimalPlaces(d.decimals).toString(),l.symbol||l.address),this.logDebug("slippage:",`${r*100}%`);let p=[a,c],m=u?"quote":"base";m==="base"&&p.reverse(),this.logDebug("output side:",m);let[f,y]=p,b=new Xe.default(y.toString()).div(10**t[u?"mintB":"mintA"].decimals).div(new Xe.default(f.toString()).div(10**t[u?"mintA":"mintB"].decimals));this.logDebug("currentPrice:",`1 ${l.symbol||l.address} \u2248 ${b.toString()} ${d.symbol||d.address}`),this.logDebug("currentPrice invert:",`1 ${d.symbol||d.address} \u2248 ${new Xe.default(1).div(b).toString()} ${l.symbol||l.address}`);let g=new He.default(0),P=n,k=new He.default(0);if(!P.isZero()){P.gt(y)&&(P=y.sub(new He.default(1)));let x=y.sub(P),C=f.mul(P).div(x);g=C.mul(Rr).div(Rr.sub(ws)),k=g.sub(C)}let I=new He.default(new Xe.default(g.toString()).mul(1+r).toFixed(0)),A=g,h=I;this.logDebug("amountIn:",new Xe.default(A.toString()).div(10**l.decimals).toDecimalPlaces(l.decimals).toString()),this.logDebug("maxAmountIn:",new Xe.default(h.toString()).div(10**l.decimals).toDecimalPlaces(l.decimals).toString());let B=null;!g.isZero()&&!P.isZero()&&(B=new Xe.default(P.toString()).div(10**d.decimals).div(new Xe.default(g.toString()).div(10**l.decimals)),this.logDebug("executionPrice:",`1 ${d.symbol||d.address} \u2248 ${B.toDecimalPlaces(Math.max(t.mintA.decimals,t.mintB.decimals)).toString()} ${l.symbol||l.address}`),this.logDebug("executionPrice invert:",`1 ${d.symbol||d.address} \u2248 ${new Xe.default(1).div(B).toDecimalPlaces(Math.max(t.mintA.decimals,t.mintB.decimals)).toString()} ${l.symbol||l.address}`));let S=b.mul(A.toString()),K=S.sub(n.toString()).abs().div(S);return this.logDebug("priceImpact:",`${K.toString()}%`),{amountIn:A,maxAmountIn:h,currentPrice:b,executionPrice:B,priceImpact:K,fee:k}}async swap({poolInfo:t,poolKeys:n,amountIn:o,amountOut:i,inputMint:r,fixedSide:a,txVersion:c,config:u,computeBudgetConfig:l,txTipConfig:d,feePayer:p}){let m=this.createTxBuilder(p),{associatedOnly:f=!0,inputUseSolBalance:y=!0,outputUseSolBalance:b=!0}=u||{},[g,P]=r===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],k=y&&g.address===ee.toBase58(),I=b&&P.address===ee.toBase58(),{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:_t.TOKEN_PROGRAM_ID,mint:new mt.PublicKey(g.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:f});m.addInstruction(h||{}),A||this.logAndCreateError("input token account not found",{token:g.symbol||g.address,tokenAccountIn:A,inputTokenUseSolBalance:k,associatedOnly:f});let{account:B,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:_t.TOKEN_PROGRAM_ID,mint:new mt.PublicKey(P.address),owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!I,notUseTokenAccount:I,associatedOnly:I?!1:f});m.addInstruction(S||{}),B===void 0&&this.logAndCreateError("output token account not found",{token:P.symbol||P.address,tokenAccountOut:B,outputTokenUseSolBalance:I,associatedOnly:f});let K=n||await this.getAmmPoolKeys(t.id),x=4;return t.pooltype.includes("StablePool")&&(x=5),m.addInstruction({instructions:[x===4?Or({version:x,poolKeys:K,userKeys:{tokenAccountIn:A,tokenAccountOut:B,owner:this.scope.ownerPubKey},amountIn:o,amountOut:i,fixedSide:a}):Nr({version:x,poolKeys:K,userKeys:{tokenAccountIn:A,tokenAccountOut:B,owner:this.scope.ownerPubKey},amountIn:o,amountOut:i,fixedSide:a})],instructionTypes:[x===4?Y.AmmV4SwapBaseIn:Y.AmmV5SwapBaseIn]}),m.addCustomComputeBudget(l),m.addTipInstruction(d),m.versionBuild({txVersion:c})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t,n){let o=await Ue(this.scope.connection,t.map(l=>({pubkey:new mt.PublicKey(l)})),n),i={},r=[];for(let l=0;l<t.length;l++){let d=o[l];if(d===null||!d.accountInfo)throw Error("fetch pool info error: "+String(t[l]));let p=vi.decode(d.accountInfo.data);i[String(t[l])]=E(N({},p),{programId:d.accountInfo.owner}),r.push(p.baseVault,p.quoteVault)}let a={},c=await Ue(this.scope.connection,r.map(l=>({pubkey:new mt.PublicKey(l)})),n);for(let l=0;l<r.length;l++){let d=c[l].accountInfo;if(d===null)throw Error("fetch vault info error: "+r[l]);a[String(r[l])]=new He.default(_t.AccountLayout.decode(d.data).amount.toString())}let u={};for(let[l,d]of Object.entries(i)){let p=a[d.baseVault.toString()].sub(d.baseNeedTakePnl),m=a[d.quoteVault.toString()].sub(d.quoteNeedTakePnl);u[l]=E(N({},d),{baseReserve:p,mintAAmount:a[d.baseVault.toString()],mintBAmount:a[d.quoteVault.toString()],quoteReserve:m,poolPrice:new Xe.default(m.toString()).div(new Xe.default(10).pow(d.quoteDecimal.toString())).div(new Xe.default(p.toString()).div(new Xe.default(10).pow(d.baseDecimal.toString())))})}return u}async getPoolInfoFromRpc({poolId:t}){let n=await this.getRpcPoolInfo(t),o=_r({[t]:n}),i=o[t],r=await this.scope.tradeV2.computePoolToPoolKeys({pools:[o[t]],ammRpcData:{[t]:n}});return{poolRpcData:n,poolInfo:i,poolKeys:r[0]}}async fetchPoolBalances(){await this.scope.account.fetchWalletTokenAccounts({forceUpdate:!0});let t=this.scope.account.tokenAccounts.filter(a=>!a.mint.equals(mt.PublicKey.default)&&!a.amount.isZero()).map(a=>a.mint),i=(await Rt(this.scope.connection,t)).map((a,c)=>a&&a.data.length===_t.MintLayout.span?E(N({},_t.MintLayout.decode(a.data)),{address:t[c]}):void 0).filter(Boolean).filter(a=>this.scope.cluster==="devnet"?a:Lc.has(a.mintAuthority.toString())),r=await this.scope.api.fetchPoolByLpMints({ids:i.map(a=>a.address.toBase58()).join(",")});return i.map((a,c)=>{var u,l;return{mintData:a,address:a.address,poolInfo:r[c],balance:(l=(u=this.scope.account.tokenAccounts.find(d=>d.mint.equals(a.address)))==null?void 0:u.amount)!=null?l:new He.default(0)}})}};var G=require("@solana/web3.js"),Ne=require("@solana/spl-token");var qc=re(require("bn.js"));var qr=re(require("bn.js"));function Dc(s,e){if(e.isZero())throw Error("divisor is zero");return s.mod(e)}function $y(s,e){if(e.isZero())throw Error("rhs is zero");let t=s.div(e);return Dc(s,e).gt(Wr)&&(t=t.add(new qr.default(1))),[t,e]}var Wr=new qr.default(0),Wi=class{static swapBaseInputWithoutFees(e,t,n){let o=e.mul(n),i=t.add(e);return o.div(i)}static swapBaseOutputWithoutFees(e,t,n){let o=t.mul(e),i=n.sub(e),[r]=$y(o,i);return r}static lpTokensToTradingTokens(e,t,n,o,i){let r=e.mul(n).div(t),a=e.mul(o).div(t);if(i===0)return{tokenAmount0:r,tokenAmount1:a};if(i===1)return Dc(e.mul(n),t).gt(Wr)&&r.gt(Wr)&&(r=r.add(new qr.default(1))),Dc(e.mul(o),t).gt(Wr)&&a.gt(Wr)&&(a=a.add(new qr.default(1))),{tokenAmount0:r,tokenAmount1:a};throw Error("roundDirection value error")}};var Dd=re(require("bn.js"));var Ed=re(require("bn.js")),et=new Ed.default(1e6);var an=class{static tradingFee(e,t){return qi(e,t,et)}static protocolFee(e,t){return Ur(e,t,et)}static fundFee(e,t){return Ur(e,t,et)}static creatorFee(e,t){return qi(e,t,et)}static splitCreatorFee(e,t,n){return Ur(e,n,t.add(n))}static calculatePreFeeAmount(e,t){if(t.isZero())return e;let n=e.mul(et),o=et.sub(t);return n.add(o).sub(new Dd.default(1)).div(o)}};var Wc=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(Wc||{}),Wd=(t=>(t[t.ZeroForOne=0]="ZeroForOne",t[t.OneForZero=1]="OneForZero",t))(Wd||{}),qd=(t=>(t[t.OneForZero=0]="OneForZero",t[t.ZeroForOne=1]="ZeroForOne",t))(qd||{}),Ui=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swapBaseInput(e,t,n,o,i,r,a,c){let u=new qc.default(0),l=an.tradingFee(e,o),d;c?(u=an.creatorFee(e,i),d=e.sub(l).sub(u)):d=e.sub(l);let p=an.protocolFee(l,r),m=an.protocolFee(l,a),f=Wi.swapBaseInputWithoutFees(d,t,n),y;return c?y=f:(u=an.creatorFee(f,i),y=f.sub(u)),{newInputVaultAmount:t.add(d),newOutputVaultAmount:n.sub(f),inputAmount:e,outputAmount:y,tradeFee:l,protocolFee:p,fundFee:m,creatorFee:u}}static swapBaseOutput(e,t,n,o,i,r,a,c){let u,l=new qc.default(0),d;if(c)d=e;else{let b=an.calculatePreFeeAmount(e,i);l=b.sub(e),d=b}let p=Wi.swapBaseOutputWithoutFees(d,t,n),m;if(c){let b=an.calculatePreFeeAmount(p,o.add(i)),g=b.sub(p);l=an.splitCreatorFee(g,o,i),u=g.sub(l),m=b}else{let b=an.calculatePreFeeAmount(p,o);u=b.sub(p),m=b}let f=an.protocolFee(u,r),y=an.fundFee(u,a);return{newInputVaultAmount:t.add(p),newOutputVaultAmount:n.sub(d),inputAmount:m,outputAmount:e,tradeFee:u,protocolFee:f,fundFee:y,creatorFee:l}}};var $e=re(require("bn.js")),Pn=re(require("decimal.js"));var ot=require("@solana/web3.js"),Kt=require("@solana/spl-token");var Jy=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),eb=Buffer.from("amm_config","utf8"),tb=Buffer.from("pool","utf8"),nb=Buffer.from("pool_lp_mint","utf8"),ob=Buffer.from("pool_vault","utf8"),ib=Buffer.from("observation","utf8"),rb=Buffer.from("permission","utf8"),ab=Buffer.from("support_mint","utf8");function Ko(s){return ae([Jy],s)}function sb(s,e){return ae([eb,ub(e)],s)}function Os(s,e,t,n){return ae([tb,e.toBuffer(),t.toBuffer(),n.toBuffer()],s)}function Ud(s,e){return ae([nb,e.toBuffer()],s)}function Uc(s,e,t){return ae([ob,e.toBuffer(),t.toBuffer()],s)}function Co(s,e){return ae([ib,e.toBuffer()],s)}function ub(s){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,s,!1),new Uint8Array(e)}function Ns({poolId:s,programId:e,configId:t,mintA:n,mintB:o}){let i=Ko(e).publicKey,r=s||Os(e,t,n,o).publicKey,a=Ud(e,r).publicKey,c=Uc(e,r,n).publicKey,u=Uc(e,r,o).publicKey,l=Co(e,r).publicKey;return{poolId:r,configId:t,authority:i,lpMint:a,vaultA:c,vaultB:u,observationId:l}}var Gd=Buffer.from("locked_liquidity","utf8");function ni(s,e){return ae([Gd,e.toBuffer()],s)}function Gc(s,e){return ae([rb,e.toBuffer()],s)}function Ms(s,e){return ae([ab,e.toBuffer()],s)}var cb=Se("Raydium_cpmm"),$n={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])};function zc(s,e,t,n,o,i,r,a,c,u,l,d,p,m,f,y,b,g,P,k,I){let A=v([w("amountMaxA"),w("amountMaxB"),w("openTime")]),h=Os(s,t,i,r).publicKey,B=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!o.equals(h),isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:Kt.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:Kt.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:lu,isSigner:!1,isWritable:!1},{pubkey:Tt,isSigner:!1,isWritable:!1},...(I!=null?I:[]).map(K=>({pubkey:K,isSigner:!1,isWritable:!1}))],S=Buffer.alloc(A.span);return A.encode({amountMaxA:g,amountMaxB:P,openTime:k},S),new ot.TransactionInstruction({keys:B,programId:s,data:Buffer.from([...$n.initialize,...S])})}function Xc(s,e,t,n,o,i,r,a,c,u,l,d,p,m,f){let y=v([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,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:c,isSigner:!1,isWritable:!0},{pubkey:Kt.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:Kt.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],g=Buffer.alloc(y.span);return cb.debug("cpmm deposit data",{lpAmount:p.toString(),amountMaxA:m.toString(),amountMaxB:f.toString()}),y.encode({lpAmount:p,amountMaxA:m,amountMaxB:f},g),new ot.TransactionInstruction({keys:b,programId:s,data:Buffer.from([...$n.deposit,...g])})}function Yc(s,e,t,n,o,i,r,a,c,u,l,d,p,m,f){let y=v([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,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:c,isSigner:!1,isWritable:!0},{pubkey:Kt.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:Kt.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:cn,isSigner:!1,isWritable:!1}],g=Buffer.alloc(y.span);return y.encode({lpAmount:p,amountMinA:m,amountMinB:f},g),new ot.TransactionInstruction({keys:b,programId:s,data:Buffer.from([...$n.withdraw,...g])})}function oi(s,e,t,n,o,i,r,a,c,u,l,d,p,m,f,y){let b=v([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountIn:f,amounOutMin:y},P),new ot.TransactionInstruction({keys:g,programId:s,data:Buffer.from([...$n.swapBaseInput,...P])})}function Hc(s,e,t,n,o,i,r,a,c,u,l,d,p,m,f,y){let b=v([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountInMax:f,amountOut:y},P),new ot.TransactionInstruction({keys:g,programId:s,data:Buffer.from([...$n.swapBaseOutput,...P])})}async function Qc(s){var b;let{ownerInfo:e,poolInfo:t,poolKeys:n,feeNftOwner:o,getEphemeralSigners:i}=s,r=[],[a,c]=[new ot.PublicKey(t.id),new ot.PublicKey(t.lpMint.address)],u;if(i)u=new ot.PublicKey((await i(1))[0]);else{let g=ot.Keypair.generate();r.push(g),u=g.publicKey}let{publicKey:l}=ne(o,u,Kt.TOKEN_PROGRAM_ID),{publicKey:d}=Hn(u),{publicKey:p}=ni(s.lockProgram,u),{publicKey:m}=ne(e.wallet,c,Kt.TOKEN_PROGRAM_ID),{publicKey:f}=ne(s.lockAuthProgram,c,Kt.TOKEN_PROGRAM_ID),y=zd({programId:s.lockProgram,auth:s.lockAuthProgram,payer:e.feePayer,liquidityOwner:e.wallet,nftOwner:o,nftMint:u,nftAccount:l,poolId:a,lockPda:p,mintLp:c,userLpVault:m,lockLpVault:f,poolVaultA:new ot.PublicKey(n.vault.A),poolVaultB:new ot.PublicKey(n.vault.B),metadataAccount:d,lpAmount:s.lpAmount,withMetadata:(b=s.withMetadata)!=null?b:!0});return{address:{nftMint:u,nftAccount:l,metadataAccount:d,lockPda:p,userLpVault:m,lockLpVault:f},instructions:[y],signers:r,instructionTypes:[Y.CpmmLockLp],lookupTableAddress:[]}}function zd({programId:s,auth:e,payer:t,liquidityOwner:n,nftOwner:o,nftMint:i,nftAccount:r,poolId:a,lockPda:c,mintLp:u,userLpVault:l,lockLpVault:d,poolVaultA:p,poolVaultB:m,metadataAccount:f,lpAmount:y,withMetadata:b}){let g=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:Tt,isSigner:!1,isWritable:!1},{pubkey:ot.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:Kt.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:Kt.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1}],P=v([w("lpAmount"),Je("withMetadata")]),k=Buffer.alloc(P.span);P.encode({lpAmount:y,withMetadata:b},k);let I=Buffer.from([...$n.lockCpLiquidity,...k]);return new ot.TransactionInstruction({keys:g,programId:s,data:I})}function Fs({programId:s,nftOwner:e,auth:t,nftAccount:n,lockPda:o,poolId:i,mintLp:r,userVaultA:a,userVaultB:c,poolVaultA:u,poolVaultB:l,mintA:d,mintB:p,lockLpVault:m,lpFeeAmount:f,cpmmProgram:y,cpmmAuthProgram:b}){let g=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:y!=null?y:Xn,isSigner:!1,isWritable:!1},{pubkey:b!=null?b:Ua,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Kt.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:Kt.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:cn,isSigner:!1,isWritable:!1}],P=v([w("lpFeeAmount")]),k=Buffer.alloc(P.span);P.encode({lpFeeAmount:f},k);let I=Buffer.from([...$n.collectCpFee,...k]);return new ot.TransactionInstruction({keys:g,programId:s,data:I})}function vs(s,e,t,n,o,i,r,a,c,u,l,d,p){let m=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:Kt.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:ot.SystemProgram.programId,isSigner:!1,isWritable:!1}];return new ot.TransactionInstruction({keys:m,programId:s,data:$n.collectCreatorFee})}function Zc(s,e,t,n,o,i,r,a,c,u,l,d,p){let m=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,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:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:Kt.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:ot.SystemProgram.programId,isSigner:!1,isWritable:!1}];return new ot.TransactionInstruction({keys:m,programId:s,data:$n.collectCreatorFeePermissionless})}function jc(s,e,t,n,o,i,r,a,c,u,l,d,p,m,f,y,b,g,P,k,I,A,h,B){let S=v([w("amountA"),w("amountB"),w("openTime"),V("feeOn")]),K=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:Kt.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:Kt.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:ot.SystemProgram.programId,isSigner:!1,isWritable:!1},...(B!=null?B:[]).map(C=>({pubkey:C,isSigner:!1,isWritable:!1}))],x=Buffer.alloc(S.span);return S.encode({amountA:k,amountB:I,openTime:A,feeOn:h},x),new ot.TransactionInstruction({keys:K,programId:s,data:Buffer.from([...$n.initializeWithPermission,...x])})}var $c=v([xe(8),V("bump"),Je("disableCreatePool"),ut("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),M("protocolOwner"),M("fundOwner"),w("creatorFeeRate"),J(w(),15)]),Gr=v([xe(8),M("configId"),M("poolCreator"),M("vaultA"),M("vaultB"),M("mintLp"),M("mintA"),M("mintB"),M("mintProgramA"),M("mintProgramB"),M("observationId"),V("bump"),V("status"),V("lpDecimals"),V("mintDecimalA"),V("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),w("epoch"),V("feeOn"),Je("enableCreatorFee"),J(V(),6),w("creatorFeesMintA"),w("creatorFeesMintB"),J(w(),28)]),lb=v([xe(8),M("configId"),J(w(),30)]);var Jc=(n=>(n[n.BothToken=0]="BothToken",n[n.OnlyTokenA=1]="OnlyTokenA",n[n.OnlyTokenB=2]="OnlyTokenB",n))(Jc||{});var zr=class extends st{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){return(await this.getRpcPoolInfos([e],t))[e]}async getRpcPoolInfos(e,t){let n=await Ue(this.scope.connection,e.map(d=>({pubkey:new G.PublicKey(d)}))),o={},i=new Set,r=[];for(let d=0;d<e.length;d++){let p=n[d];if(p.accountInfo===null)throw Error("fetch pool info error: "+String(e[d]));let m=Gr.decode(p.accountInfo.data);o[String(e[d])]=E(N({},m),{programId:p.accountInfo.owner}),i.add(String(m.configId)),r.push(m.vaultA,m.vaultB)}let a={};if(t){let d=[...i],p=await Ue(this.scope.connection,d.map(m=>({pubkey:new G.PublicKey(m)})));for(let m=0;m<d.length;m++){let f=p[m].accountInfo;if(f===null)throw Error("fetch pool config error: "+d[m]);a[d[m]]=$c.decode(f.data)}}let c={},u=await Ue(this.scope.connection,r.map(d=>({pubkey:new G.PublicKey(d)})));for(let d=0;d<r.length;d++){let p=u[d].accountInfo;if(p===null)throw Error("fetch vault info error: "+r[d]);c[String(r[d])]=new $e.default(Ne.AccountLayout.decode(p.data).amount.toString())}let l={};for(let[d,p]of Object.entries(o)){let m=c[p.vaultA.toString()].sub(p.protocolFeesMintA).sub(p.fundFeesMintA).sub(p.creatorFeesMintA),f=c[p.vaultB.toString()].sub(p.protocolFeesMintB).sub(p.fundFeesMintB).sub(p.creatorFeesMintB);l[d]=E(N({},p),{baseReserve:m,quoteReserve:f,vaultAAmount:c[p.vaultA.toString()],vaultBAmount:c[p.vaultB.toString()],configInfo:a[p.configId.toString()],poolPrice:new Pn.default(f.toString()).div(new Pn.default(10).pow(p.mintDecimalB)).div(new Pn.default(m.toString()).div(new Pn.default(10).pow(p.mintDecimalA)))})}return l}toComputePoolInfos({pools:e,mintInfos:t}){return Object.keys(e).reduce((n,o)=>{var c,u,l,d;let i=e[o],[r,a]=[i.mintA.toBase58(),i.mintB.toBase58()];return E(N({},n),{[o]:E(N({},i),{id:new G.PublicKey(o),configInfo:i.configInfo,version:7,authority:Ko(i.programId).publicKey,mintA:Bt({address:r,decimals:i.mintDecimalA,programId:i.mintProgramA.toBase58(),extensions:{feeConfig:(c=t[r])!=null&&c.feeConfig?Vn((u=t[r])==null?void 0:u.feeConfig):void 0}}),mintB:Bt({address:a,decimals:i.mintDecimalB,programId:i.mintProgramB.toBase58(),extensions:{feeConfig:(l=t[a])!=null&&l.feeConfig?Vn((d=t[a])==null?void 0:d.feeConfig):void 0}})})})},{})}async getPoolInfoFromRpc(e){let t=await this.getRpcPoolInfo(e,!0),n=await yo({connection:this.scope.connection,mints:[t.mintA,t.mintB]}),o=Bt({address:t.mintA.toBase58(),decimals:t.mintDecimalA,programId:t.mintProgramA.toBase58(),extensions:{feeConfig:n[t.mintA.toBase58()].feeConfig?Vn(n[t.mintA.toBase58()].feeConfig):void 0}}),i=Bt({address:t.mintB.toBase58(),decimals:t.mintDecimalB,programId:t.mintProgramB.toBase58(),extensions:{feeConfig:n[t.mintB.toBase58()].feeConfig?Vn(n[t.mintB.toBase58()].feeConfig):void 0}}),r=Bt({address:t.mintLp.toBase58(),decimals:t.lpDecimals,programId:Ne.TOKEN_PROGRAM_ID.toBase58()}),a={id:t.configId.toBase58(),index:t.configInfo.index,protocolFeeRate:t.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:t.configInfo.tradeFeeRate.toNumber(),fundFeeRate:t.configInfo.fundFeeRate.toNumber(),createPoolFee:t.configInfo.createPoolFee.toString()},c={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};return{poolInfo:{programId:t.programId.toBase58(),id:e,type:"Standard",lpMint:r,lpPrice:0,lpAmount:t.lpAmount.toNumber(),config:a,mintA:o,mintB:i,rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:t.poolPrice.toNumber(),mintAmountA:new Pn.default(t.vaultAAmount.toString()).div(10**o.decimals).toNumber(),mintAmountB:new Pn.default(t.vaultBAmount.toString()).div(10**i.decimals).toNumber(),feeRate:t.configInfo.tradeFeeRate.toNumber(),openTime:t.openTime.toString(),tvl:0,burnPercent:0,day:c,week:c,month:c,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,feeOn:"",hasDynamicFee:!1,launchMigratePool:!1,tips:[]},poolKeys:{programId:t.programId.toBase58(),id:e,mintA:o,mintB:i,openTime:t.openTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},authority:Ko(t.programId).publicKey.toBase58(),mintLp:r,config:a,observationId:Co(t.programId,new G.PublicKey(e)).publicKey.toBase58()},rpcData:t,computePoolInfo:E(N({},t),{id:new G.PublicKey(e),configInfo:t.configInfo,version:7,authority:Ko(t.programId).publicKey,mintA:o,mintB:i})}}async createPool(y){var b=y,{poolId:e,programId:t,poolFeeAccount:n,startTime:o,ownerInfo:i,associatedOnly:r=!1,checkCreateATAOwner:a=!1,txVersion:c,feeConfig:u,computeBudgetConfig:l,txTipConfig:d,feePayer:p,addSupportMintExt:m}=b,f=tt(b,["poolId","programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","feeConfig","computeBudgetConfig","txTipConfig","feePayer","addSupportMintExt"]);var $,H,oe;let g=i.feePayer||(($=this.scope.owner)==null?void 0:$.publicKey),P=new $e.default(new G.PublicKey(f.mintA.address).toBuffer()).lte(new $e.default(new G.PublicKey(f.mintB.address).toBuffer())),[k,I]=P?[f.mintA,f.mintB]:[f.mintB,f.mintA],[A,h]=P?[f.mintAAmount,f.mintBAmount]:[f.mintBAmount,f.mintAAmount],B=i.useSOLBalance&&k.address===Ne.NATIVE_MINT.toBase58(),S=i.useSOLBalance&&I.address===Ne.NATIVE_MINT.toBase58(),[K,x]=[new G.PublicKey(k.address),new G.PublicKey(I.address)],C=this.createTxBuilder(p),{account:L,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({mint:K,tokenProgram:k.programId,owner:this.scope.ownerPubKey,createInfo:B?{payer:g,amount:A}:void 0,notUseTokenAccount:B,skipCloseAccount:!B,associatedOnly:B?!1:r,checkCreateATAOwner:a});C.addInstruction(O||{});let{account:R,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({mint:new G.PublicKey(I.address),tokenProgram:I.programId,owner:this.scope.ownerPubKey,createInfo:S?{payer:g,amount:h}:void 0,notUseTokenAccount:S,skipCloseAccount:!S,associatedOnly:S?!1:r,checkCreateATAOwner:a});if(C.addInstruction(F||{}),L===void 0||R===void 0)throw Error(`you don't has some token account, userVaultA: ${L==null?void 0:L.toBase58()}, userVaultB: ${R==null?void 0:R.toBase58()}`);let W=Ns({poolId:e,programId:t,configId:new G.PublicKey(u.id),mintA:K,mintB:x}),D=[],X=[];return m&&(k.programId===Ne.TOKEN_2022_PROGRAM_ID.toBase58()&&X.push(Ms(t,new G.PublicKey(k.address)).publicKey),I.programId===Ne.TOKEN_2022_PROGRAM_ID.toBase58()&&X.push(Ms(t,new G.PublicKey(I.address)).publicKey),(await this.scope.connection.getMultipleAccountsInfo(X)).forEach((te,ge)=>{te&&D.push(X[ge])})),C.addInstruction({instructions:[zc(t,this.scope.ownerPubKey,new G.PublicKey(u.id),W.authority,W.poolId,K,x,W.lpMint,L,R,ne(this.scope.ownerPubKey,W.lpMint).publicKey,W.vaultA,W.vaultB,n,new G.PublicKey((H=k.programId)!=null?H:Ne.TOKEN_PROGRAM_ID),new G.PublicKey((oe=I.programId)!=null?oe:Ne.TOKEN_PROGRAM_ID),W.observationId,A,h,o,D)],instructionTypes:[Y.CpmmCreatePool]}),C.addCustomComputeBudget(l),C.addTipInstruction(d),C.versionBuild({txVersion:c,extInfo:{address:E(N({},W),{mintA:k,mintB:I,programId:t,poolFeeAccount:n,feeConfig:u})}})}async addLiquidity(e){let{poolInfo:t,poolKeys:n,inputAmount:o,baseIn:i,slippage:r,computeResult:a,computeBudgetConfig:c,txTipConfig:u,config:l,txVersion:d,feePayer:p}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),o.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:o.toString()});let{account:m}=this.scope,{bypassAssociatedCheck:f,checkCreateATAOwner:y}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},l),b=a?void 0:await this.getRpcPoolInfo(t.id),{liquidity:g,inputAmountFee:P,anotherAmount:k}=a||this.computePairAmount({poolInfo:E(N({},t),{lpAmount:new Pn.default(b.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),baseReserve:b.baseReserve,quoteReserve:b.quoteReserve,slippage:new at(0),baseIn:i,epochInfo:await this.scope.fetchEpochInfo(),amount:new Pn.default(o.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),I=k.amount,A=t.mintA.address===Ne.NATIVE_MINT.toString(),h=t.mintB.address===Ne.NATIVE_MINT.toString(),B=this.createTxBuilder(p),[S,K]=[new G.PublicKey(t.mintA.address),new G.PublicKey(t.mintB.address)],{account:x,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new G.PublicKey(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A||(i?o:I).isZero()?{payer:this.scope.ownerPubKey,amount:i?o:I}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!1,checkCreateATAOwner:y});B.addInstruction(C||{});let{account:L,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new G.PublicKey(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||(i?I:o).isZero()?{payer:this.scope.ownerPubKey,amount:i?I:o}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!1,checkCreateATAOwner:y});B.addInstruction(O||{}),!x&&!L&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",m.tokenAccounts);let R=await m.getCreatedTokenAccount({mint:new G.PublicKey(t.lpMint.address)}),$=await m.handleTokenAccount({side:"out",amount:0,mint:new G.PublicKey(t.lpMint.address),tokenAccount:R,bypassAssociatedCheck:f,checkCreateATAOwner:y}),{tokenAccount:F}=$,W=tt($,["tokenAccount"]);B.addInstruction(W);let D=n!=null?n:await this.getCpmmPoolKeys(t.id),X=new at(new $e.default(1)).sub(r);return B.addInstruction({instructions:[Xc(new G.PublicKey(t.programId),this.scope.ownerPubKey,new G.PublicKey(D.authority),new G.PublicKey(t.id),F,x,L,new G.PublicKey(D.vault.A),new G.PublicKey(D.vault.B),S,K,new G.PublicKey(t.lpMint.address),a?a==null?void 0:a.liquidity:X.mul(g).quotient,i?P.amount:I,i?I:P.amount)],instructionTypes:[Y.CpmmAddLiquidity],lookupTableAddress:D.lookupTableAccount?[D.lookupTableAccount]:[]}),B.addCustomComputeBudget(c),B.addTipInstruction(u),B.versionBuild({txVersion:d,lookupTableAddress:D.lookupTableAccount?[D.lookupTableAccount]:void 0})}async withdrawLiquidity(e){var W,D;let{poolInfo:t,poolKeys:n,lpAmount:o,slippage:i,computeBudgetConfig:r,txTipConfig:a,txVersion:c,feePayer:u,closeWsol:l=!0}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let d=new at(new $e.default(1)).sub(i),p=await this.getRpcPoolInfo(t.id),[m,f]=[d.mul(o.mul(p.baseReserve).div(p.lpAmount)).quotient,d.mul(o.mul(p.quoteReserve).div(p.lpAmount)).quotient],y=await this.scope.fetchEpochInfo(),[b,g]=[St(m,t.mintA.extensions.feeConfig,y,!1),St(f,t.mintB.extensions.feeConfig,y,!1)],{account:P}=this.scope,k=this.createTxBuilder(u),[I,A]=[new G.PublicKey(t.mintA.address),new G.PublicKey(t.mintB.address)],h=I.equals(ee),B=A.equals(ee),S,K,{account:x,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new G.PublicKey(t.mintA.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(h&&l),associatedOnly:!h,checkCreateATAOwner:!1});S=x,C&&k.addInstruction(C);let{account:L,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new G.PublicKey(t.mintB.address),notUseTokenAccount:B,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(B&&l),associatedOnly:!B,checkCreateATAOwner:!1});K=L,O&&k.addInstruction(O),(!S||!K)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",P.tokenAccounts);let R=await P.getCreatedTokenAccount({mint:new G.PublicKey(t.lpMint.address)});R||this.logAndCreateError("cannot found lp token account","tokenAccounts",P.tokenAccounts);let F=n!=null?n:await this.getCpmmPoolKeys(t.id);return k.addInstruction({instructions:[Yc(new G.PublicKey(t.programId),this.scope.ownerPubKey,new G.PublicKey(F.authority),new G.PublicKey(t.id),R,S,K,new G.PublicKey(F.vault.A),new G.PublicKey(F.vault.B),I,A,new G.PublicKey(t.lpMint.address),o,m.sub((W=b.fee)!=null?W:new $e.default(0)),f.sub((D=g.fee)!=null?D:new $e.default(0)))],instructionTypes:[Y.CpmmWithdrawLiquidity],lookupTableAddress:F.lookupTableAccount?[F.lookupTableAccount]:[]}),k.addCustomComputeBudget(r),k.addTipInstruction(a),k.versionBuild({txVersion:c,lookupTableAddress:F.lookupTableAccount?[F.lookupTableAccount]:void 0})}async swap(e){var C,L,O,R,F,W;let{poolInfo:t,poolKeys:n,baseIn:o,fixedOut:i,inputAmount:r,swapResult:a,slippage:c=0,config:u,computeBudgetConfig:l,txTipConfig:d,txVersion:p,feePayer:m}=e,{bypassAssociatedCheck:f,checkCreateATAOwner:y,associatedOnly:b}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1,associatedOnly:!0},u),g=this.createTxBuilder(m),[P,k]=[new G.PublicKey(t.mintA.address),new G.PublicKey(t.mintB.address)];i?a.inputAmount=a.inputAmount.mul(new $e.default((1+c)*1e4)).div(new $e.default(1e4)):a.outputAmount=a.outputAmount.mul(new $e.default((1-c)*1e4)).div(new $e.default(1e4));let I=t.mintA.address===ee.toBase58(),A=t.mintB.address===ee.toBase58(),{account:h,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:P,tokenProgram:new G.PublicKey((C=t.mintA.programId)!=null?C:Ne.TOKEN_PROGRAM_ID),owner:this.scope.ownerPubKey,createInfo:I||!o?{payer:m||this.scope.ownerPubKey,amount:o?a.inputAmount:0}:void 0,notUseTokenAccount:I,skipCloseAccount:!I,associatedOnly:I?!1:b,checkCreateATAOwner:y});B&&g.addInstruction(B);let{account:S,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({mint:k,tokenProgram:new G.PublicKey((L=t.mintB.programId)!=null?L:Ne.TOKEN_PROGRAM_ID),owner:this.scope.ownerPubKey,createInfo:A||o?{payer:m||this.scope.ownerPubKey,amount:o?0:a.inputAmount}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:b,checkCreateATAOwner:y});K&&g.addInstruction(K),(!h||!S)&&this.logAndCreateError("user do not have token account",{mintA:t.mintA.symbol||t.mintA.address,mintB:t.mintB.symbol||t.mintB.address,mintATokenAcc:h,mintBTokenAcc:S,mintAUseSOLBalance:I,mintBUseSOLBalance:A,associatedOnly:b});let x=n!=null?n:await this.getCpmmPoolKeys(t.id);return g.addInstruction({instructions:[i?Hc(new G.PublicKey(t.programId),this.scope.ownerPubKey,new G.PublicKey(x.authority),new G.PublicKey(x.config.id),new G.PublicKey(t.id),o?h:S,o?S:h,new G.PublicKey(x.vault[o?"A":"B"]),new G.PublicKey(x.vault[o?"B":"A"]),new G.PublicKey((F=t[o?"mintA":"mintB"].programId)!=null?F:Ne.TOKEN_PROGRAM_ID),new G.PublicKey((W=t[o?"mintB":"mintA"].programId)!=null?W:Ne.TOKEN_PROGRAM_ID),o?P:k,o?k:P,Co(new G.PublicKey(t.programId),new G.PublicKey(t.id)).publicKey,a.inputAmount,a.outputAmount):oi(new G.PublicKey(t.programId),this.scope.ownerPubKey,new G.PublicKey(x.authority),new G.PublicKey(x.config.id),new G.PublicKey(t.id),o?h:S,o?S:h,new G.PublicKey(x.vault[o?"A":"B"]),new G.PublicKey(x.vault[o?"B":"A"]),new G.PublicKey((O=t[o?"mintA":"mintB"].programId)!=null?O:Ne.TOKEN_PROGRAM_ID),new G.PublicKey((R=t[o?"mintB":"mintA"].programId)!=null?R:Ne.TOKEN_PROGRAM_ID),o?P:k,o?k:P,Co(new G.PublicKey(t.programId),new G.PublicKey(t.id)).publicKey,r,a.outputAmount)],instructionTypes:[i?Y.CpmmSwapBaseOut:Y.ClmmSwapBaseIn]}),g.addCustomComputeBudget(l),g.addTipInstruction(d),g.versionBuild({txVersion:p,lookupTableAddress:x.lookupTableAccount?[x.lookupTableAccount]:void 0})}async lockLp(e){var p,m,f,y,b;let{poolInfo:t,lpAmount:n,computeBudgetConfig:o,txTipConfig:i,txVersion:r,feePayer:a,feeNftOwner:c}=e;n.isZero()&&this.logAndCreateError("lpAmount must greater than zero",{lpAmount:n.toString()});let u=this.createTxBuilder(a),l=(p=e.poolKeys)!=null?p:await this.getCpmmPoolKeys(t.id),d=await Qc({poolInfo:t,poolKeys:l,ownerInfo:{wallet:this.scope.ownerPubKey,feePayer:(m=e.feePayer)!=null?m:this.scope.ownerPubKey},feeNftOwner:c!=null?c:this.scope.ownerPubKey,lockProgram:(f=e.programId)!=null?f:Uo,lockAuthProgram:(y=e.authProgram)!=null?y:bi,lpAmount:n,withMetadata:(b=e.withMetadata)!=null?b:!0,getEphemeralSigners:e.getEphemeralSigners});return u.addInstruction(d),u.addCustomComputeBudget(o),u.addTipInstruction(i),u.versionBuild({txVersion:r,extInfo:d.address,lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:void 0})}async harvestLockLp(e){var L;let{poolInfo:t,lpFeeAmount:n,nftMint:o,programId:i=Uo,authProgram:r=bi,cpmmProgram:a,computeBudgetConfig:c,txTipConfig:u,txVersion:l,closeWsol:d=!0}=e;n.isZero()&&this.logAndCreateError("lpFeeAmount must greater than zero",{lpAmount:n.toString()});let p=e.feePayer||this.scope.ownerPubKey,m=this.createTxBuilder(p),[f,y]=[new G.PublicKey(t.mintA.address),new G.PublicKey(t.mintB.address)],b=f.equals(ee),g=y.equals(ee),P,k,{account:I,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new G.PublicKey(t.mintA.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(b&&d),associatedOnly:!b,checkCreateATAOwner:!1});P=I,A&&m.addInstruction(A);let{account:h,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new G.PublicKey(t.mintB.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(g&&d),associatedOnly:!g,checkCreateATAOwner:!1});k=h,B&&m.addInstruction(B),(!P||!k)&&this.logAndCreateError("cannot found target token accounts",{tokenAccountA:P,tokenAccountB:k});let S=(L=e.poolKeys)!=null?L:await this.getCpmmPoolKeys(t.id),{publicKey:K}=ne(p,o,Ne.TOKEN_PROGRAM_ID),{publicKey:x}=ni(i,o),{publicKey:C}=ne(r,new G.PublicKey(t.lpMint.address),Ne.TOKEN_PROGRAM_ID);return m.addInstruction({instructions:[Fs({programId:i,nftOwner:this.scope.ownerPubKey,auth:r,nftMint:o,nftAccount:K,lockPda:x,poolId:new G.PublicKey(t.id),mintLp:new G.PublicKey(S.mintLp.address),userVaultA:P,userVaultB:k,poolVaultA:new G.PublicKey(S.vault.A),poolVaultB:new G.PublicKey(S.vault.B),mintA:f,mintB:y,lockLpVault:C,lpFeeAmount:n,cpmmProgram:a==null?void 0:a.programId,cpmmAuthProgram:a==null?void 0:a.authProgram})],instructionTypes:[Y.CpmmCollectLockFee]}),m.addCustomComputeBudget(c),m.addTipInstruction(u),m.versionBuild({txVersion:l,lookupTableAddress:S.lookupTableAccount?[S.lookupTableAccount]:void 0})}async harvestMultiLockLp(e){var m;let{lockInfo:t,programId:n=Uo,authProgram:o=bi,cpmmProgram:i,computeBudgetConfig:r,txVersion:a,closeWsol:c=!0}=e,u=e.feePayer||this.scope.ownerPubKey,l=this.createTxBuilder(u),d={},p=[];for(let f of t){let{poolInfo:y,lpFeeAmount:b,nftMint:g}=f;if(b.isZero())continue;let[P,k]=[new G.PublicKey(y.mintA.address),new G.PublicKey(y.mintB.address)],I=P.equals(ee),A=k.equals(ee),h=d[y.mintA.address],B=d[y.mintB.address];if(!h)if(I){let{account:L,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.mintA.programId,mint:new G.PublicKey(y.mintA.address),notUseTokenAccount:!0,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!c,associatedOnly:!1,checkCreateATAOwner:!1});h=L,O&&l.addInstruction(O),d[y.mintA.address]=L}else{let L=new G.PublicKey(y.mintA.address);h=this.scope.account.getAssociatedTokenAccount(L,new G.PublicKey(y.mintA.programId)),l.addInstruction({instructions:[(0,Ne.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,h,this.scope.ownerPubKey,L,new G.PublicKey(y.mintA.programId))]}),d[y.mintA.address]=h}if(!B)if(A){let{account:L,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.mintB.programId,mint:new G.PublicKey(y.mintB.address),notUseTokenAccount:!0,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!c,associatedOnly:!1,checkCreateATAOwner:!1});B=L,O&&l.addInstruction(O),d[y.mintB.address]=L}else{let L=new G.PublicKey(y.mintB.address);B=this.scope.account.getAssociatedTokenAccount(L,new G.PublicKey(y.mintB.programId)),l.addInstruction({instructions:[(0,Ne.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,B,this.scope.ownerPubKey,L,new G.PublicKey(y.mintB.programId))]}),d[y.mintB.address]=B}(!h||!B)&&this.logAndCreateError("cannot found target token accounts",{tokenAccountA:h,tokenAccountB:B});let S=(m=f.poolKeys)!=null?m:await this.getCpmmPoolKeys(y.id);S.lookupTableAccount&&p.push(S.lookupTableAccount);let{publicKey:K}=ne(u,g,Ne.TOKEN_PROGRAM_ID),{publicKey:x}=ni(n,g),{publicKey:C}=ne(o,new G.PublicKey(y.lpMint.address),Ne.TOKEN_PROGRAM_ID);l.addInstruction({instructions:[Fs({programId:n,nftOwner:this.scope.ownerPubKey,auth:o,nftMint:g,nftAccount:K,lockPda:x,poolId:new G.PublicKey(y.id),mintLp:new G.PublicKey(S.mintLp.address),userVaultA:h,userVaultB:B,poolVaultA:new G.PublicKey(S.vault.A),poolVaultB:new G.PublicKey(S.vault.B),mintA:P,mintB:k,lockLpVault:C,lpFeeAmount:b,cpmmProgram:i==null?void 0:i.programId,cpmmAuthProgram:i==null?void 0:i.authProgram})],instructionTypes:[Y.CpmmCollectLockFee]})}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:r,lookupTableAddress:p}):l.sizeCheckBuild({computeBudgetConfig:r})}async createPoolWithPermission(y){var b=y,{poolId:e,programId:t,poolFeeAccount:n,startTime:o,ownerInfo:i,associatedOnly:r=!1,checkCreateATAOwner:a=!1,txVersion:c,feeConfig:u,computeBudgetConfig:l,txTipConfig:d,feePayer:p,feeOn:m}=b,f=tt(b,["poolId","programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","feeConfig","computeBudgetConfig","txTipConfig","feePayer","feeOn"]);var D,X,$;console.log("***this method only available for wallet with permissions***");let g=i.feePayer||((D=this.scope.owner)==null?void 0:D.publicKey),P=new $e.default(new G.PublicKey(f.mintA.address).toBuffer()).lte(new $e.default(new G.PublicKey(f.mintB.address).toBuffer())),[k,I]=P?[f.mintA,f.mintB]:[f.mintB,f.mintA],[A,h]=P?[f.mintAAmount,f.mintBAmount]:[f.mintBAmount,f.mintAAmount],B=i.useSOLBalance&&k.address===Ne.NATIVE_MINT.toBase58(),S=i.useSOLBalance&&I.address===Ne.NATIVE_MINT.toBase58(),[K,x]=[new G.PublicKey(k.address),new G.PublicKey(I.address)],C=this.createTxBuilder(p),{account:L,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({mint:K,tokenProgram:k.programId,owner:this.scope.ownerPubKey,createInfo:B?{payer:g,amount:A}:void 0,notUseTokenAccount:B,skipCloseAccount:!B,associatedOnly:B?!1:r,checkCreateATAOwner:a});C.addInstruction(O||{});let{account:R,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({mint:new G.PublicKey(I.address),tokenProgram:I.programId,owner:this.scope.ownerPubKey,createInfo:S?{payer:g,amount:h}:void 0,notUseTokenAccount:S,skipCloseAccount:!S,associatedOnly:S?!1:r,checkCreateATAOwner:a});if(C.addInstruction(F||{}),L===void 0||R===void 0)throw Error("you don't has some token account");let W=Ns({poolId:e,programId:t,configId:new G.PublicKey(u.id),mintA:K,mintB:x});return C.addInstruction({instructions:[jc(t,this.scope.ownerPubKey,this.scope.ownerPubKey,new G.PublicKey(u.id),W.authority,W.poolId,K,x,W.lpMint,L,R,ne(this.scope.ownerPubKey,W.lpMint).publicKey,W.vaultA,W.vaultB,n,new G.PublicKey((X=k.programId)!=null?X:Ne.TOKEN_PROGRAM_ID),new G.PublicKey(($=I.programId)!=null?$:Ne.TOKEN_PROGRAM_ID),W.observationId,Gc(t,this.scope.ownerPubKey).publicKey,A,h,o,m)],instructionTypes:[Y.CpmmCreatePool]}),C.addCustomComputeBudget(l),C.addTipInstruction(d),C.versionBuild({txVersion:c,extInfo:{address:E(N({},W),{mintA:k,mintB:I,programId:t,poolFeeAccount:n,feeConfig:u})}})}async collectCreatorFees({poolInfo:e,poolKeys:t,programId:n=Xn,txVersion:o,computeBudgetConfig:i,txTipConfig:r,feePayer:a}){let c=a||this.scope.ownerPubKey,u=this.createTxBuilder(c),l=t!=null?t:await this.getCpmmPoolKeys(e.id),[d,p,m,f]=[new G.PublicKey(e.mintA.address),new G.PublicKey(e.mintB.address),new G.PublicKey(e.mintA.programId),new G.PublicKey(e.mintB.programId)],y=this.scope.account.getAssociatedTokenAccount(d,m),b=this.scope.account.getAssociatedTokenAccount(p,f);return u.addInstruction({instructions:[(0,Ne.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,y,this.scope.ownerPubKey,d,new G.PublicKey(e.mintA.programId)),(0,Ne.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,b,this.scope.ownerPubKey,p,new G.PublicKey(e.mintB.programId))]}),u.addInstruction({instructions:[vs(n,this.scope.ownerPubKey,new G.PublicKey(l.authority),new G.PublicKey(l.id),new G.PublicKey(l.config.id),new G.PublicKey(l.vault.A),new G.PublicKey(l.vault.B),d,p,y,b,m,f)],instructionTypes:[]}),u.addCustomComputeBudget(i),u.addTipInstruction(r),u.versionBuild({txVersion:o})}async collectMultiCreatorFees({poolInfoList:e,poolKeyList:t,programId:n=Xn,txVersion:o,computeBudgetConfig:i,feePayer:r}){let a=r||this.scope.ownerPubKey,c=this.createTxBuilder(a),u={},l=t!=null?t:[];if(!l.length){let p=e.map(b=>b.id),m=95,f=[];for(let b=0;b<p.length;b+=m)f.push(p.slice(b,b+m));l=(await Promise.all(f.map(b=>this.scope.api.fetchPoolKeysById({idList:b})))).flat()}let d=l.reduce((p,m)=>E(N({},p),{[m.id]:m}),{});for(let p of e){let m=d[p.id]||await this.getCpmmPoolKeys(p.id),[f,y,b,g]=[new G.PublicKey(p.mintA.address),new G.PublicKey(p.mintB.address),new G.PublicKey(p.mintA.programId),new G.PublicKey(p.mintB.programId)],P=u[p.mintA.address]||this.scope.account.getAssociatedTokenAccount(f,b),k=u[p.mintB.address]||this.scope.account.getAssociatedTokenAccount(y,g);u[p.mintA.address]=P,u[p.mintB.address]=k,c.addInstruction({instructions:[vs(n,this.scope.ownerPubKey,new G.PublicKey(m.authority),new G.PublicKey(m.id),new G.PublicKey(m.config.id),new G.PublicKey(m.vault.A),new G.PublicKey(m.vault.B),f,y,P,k,b,g)],instructionTypes:[]})}return o===0?c.sizeCheckBuildV0({computeBudgetConfig:i,lookupTableAddress:l.map(p=>p.lookupTableAccount).filter(Boolean),insCountLimit:6}):c.sizeCheckBuild({computeBudgetConfig:i})}async collectCreatorFeesPermissionless({poolInfo:e,poolKeys:t,programId:n=Xn,txVersion:o,computeBudgetConfig:i,txTipConfig:r,feePayer:a}){let c=a||this.scope.ownerPubKey,u=this.createTxBuilder(c),l=t!=null?t:await this.getCpmmPoolKeys(e.id),[d,p,m,f]=[new G.PublicKey(e.mintA.address),new G.PublicKey(e.mintB.address),new G.PublicKey(e.mintA.programId),new G.PublicKey(e.mintB.programId)],y=this.scope.account.getAssociatedTokenAccount(d,m),b=this.scope.account.getAssociatedTokenAccount(p,f);return u.addInstruction({instructions:[(0,Ne.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,y,this.scope.ownerPubKey,d,new G.PublicKey(e.mintA.programId)),(0,Ne.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,b,this.scope.ownerPubKey,p,new G.PublicKey(e.mintB.programId))]}),u.addInstruction({instructions:[Zc(n,c,this.scope.ownerPubKey,new G.PublicKey(l.authority),new G.PublicKey(l.id),new G.PublicKey(l.vault.A),new G.PublicKey(l.vault.B),d,p,y,b,m,f)],instructionTypes:[]}),u.addCustomComputeBudget(i),u.addTipInstruction(r),u.versionBuild({txVersion:o})}computeSwapAmount({pool:e,amountIn:t,outputMint:n,slippage:o,swapBaseIn:i=!0}){let r=n.toString()===e.mintB.address,a=e.feeOn===0||e.feeOn===2,c=i?Ui.swapBaseInput(t,r?e.baseReserve:e.quoteReserve,r?e.quoteReserve:e.baseReserve,e.configInfo.tradeFeeRate,e.configInfo.creatorFeeRate,e.configInfo.protocolFeeRate,e.configInfo.fundFeeRate,a):Ui.swapBaseOutput(t,r?e.baseReserve:e.quoteReserve,r?e.quoteReserve:e.baseReserve,e.configInfo.tradeFeeRate,e.configInfo.creatorFeeRate,e.configInfo.protocolFeeRate,e.configInfo.fundFeeRate,a),u=new Pn.default(c.outputAmount.toString()).div(c.inputAmount.toString()),l=c.outputAmount.mul(new $e.default((1-o)*1e4)).div(new $e.default(1e4));return{allTrade:i?c.inputAmount.eq(t):c.outputAmount.eq(t),amountIn:i?t:c.inputAmount,amountOut:c.outputAmount,minAmountOut:l,executionPrice:u,fee:c.tradeFee,priceImpact:e.poolPrice.sub(u).div(e.poolPrice),swapResult:c}}computePairAmount({poolInfo:e,baseReserve:t,quoteReserve:n,amount:o,slippage:i,epochInfo:r,baseIn:a}){var I,A,h,B,S,K,x,C,L;let c=1-Number(i.toSignificant())/100,u=new $e.default(new Pn.default(o).mul(10**e[a?"mintA":"mintB"].decimals).mul(c).toFixed(0)),l=St(u,e[a?"mintA":"mintB"].extensions.feeConfig,r,!1),d=u.sub((I=l.fee)!=null?I:new $e.default(0)),p=new $e.default(new Pn.default(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,Pn.default.ROUND_DOWN));this.logDebug("baseReserve:",t.toString(),"quoteReserve:",n.toString()),this.logDebug("tokenIn:",a?e.mintA.symbol:e.mintB.symbol,"amountIn:",u.toString(),"amountInFee:",(h=(A=l.fee)==null?void 0:A.toString())!=null?h:0,"anotherToken:",a?e.mintB.symbol:e.mintA.symbol,"slippage:",`${i.toSignificant()}%`);let m=a?"base":"quote";this.logDebug("input side:",m);let f=d.mul(p).div(m==="base"?t:n),y={amount:Z,fee:void 0,expirationTime:void 0};if(!d.isZero()){let O=mb(f,t,n,p);this.logDebug("lpAmountData:",{amountA:O.amountA.toString(),amountB:O.amountB.toString()}),y=St(O[a?"amountB":"amountA"],e[a?"mintB":"mintA"].extensions.feeConfig,r,!0)}let b=new at(new $e.default(1)).add(i),g=new at(new $e.default(1)).sub(i),P=St(b.mul(y.amount.sub((B=y.fee)!=null?B:new $e.default(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,r,!0),k=St(g.mul(y.amount.sub((S=y.fee)!=null?S:new $e.default(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,r,!0);return this.logDebug("anotherAmount:",y.amount.toString(),"anotherAmountFee:",(x=(K=y.fee)==null?void 0:K.toString())!=null?x:0,"maxAnotherAmount:",P.amount.toString(),"maxAnotherAmountFee:",(L=(C=P.fee)==null?void 0:C.toString())!=null?L:0),{inputAmountFee:l,anotherAmount:y,maxAnotherAmount:P,minAnotherAmount:k,liquidity:f}}async fetchCpmmLockBalances(){await this.scope.account.fetchWalletTokenAccounts({forceUpdate:!0});let e=this.scope.account.tokenAccountRawInfos.filter(a=>a.accountInfo.amount.eq(new $e.default(1))),t=e.map(a=>ni(this.scope.cluster==="mainnet"?Uo:Tn.LOCK_CPMM_PROGRAM,a.accountInfo.mint).publicKey),n=await Ue(this.scope.connection,t.map(a=>({pubkey:a}))),o=new Map,i=n.filter((a,c)=>(o.set(a.pubkey.toString(),e[c].accountInfo.mint.toString()),!!a.accountInfo)).map(a=>a.pubkey);return(await Promise.all(i.map(a=>this.scope.api.fetchCpmmLockInfo(a)))).map((a,c)=>E(N({},a),{nftMint:new G.PublicKey(o.get(i[c].toString()))}))}};function mb(s,e,t,n){let o=s.mul(e).div(n);!o.isZero()&&!s.mul(e).mod(n).isZero()&&(o=o.add(new $e.default(1)));let i=s.mul(t).div(n);return!i.isZero()&&!s.mul(t).mod(n).isZero()&&(i=i.add(new $e.default(1))),{amountA:o,amountB:i}}var ye=require("@solana/web3.js"),Pe=require("@solana/spl-token"),Be=re(require("bn.js")),Ve=re(require("decimal.js"));var Wn=require("@solana/spl-token"),Ke=require("@solana/web3.js"),Jn=re(require("bn.js"));var co=v([w(),w("epoch"),V("curveType"),ut("index"),w("migrateFee"),w("tradeFeeRate"),w("maxShareFeeRate"),w("minSupplyA"),w("maxLockRate"),w("minSellRateA"),w("minMigrateRateA"),w("minFundRaisingB"),M("mintB"),M("protocolFeeOwner"),M("migrateFeeOwner"),M("migrateToAmmWallet"),M("migrateToCpmmWallet"),J(w(),16)]),Xd=v([w("totalLockedAmount"),w("cliffPeriod"),w("unlockPeriod"),w("startTime"),w("totalAllocatedShare")]),Sn=v([w(),w("epoch"),V("bump"),V("status"),V("mintDecimalsA"),V("mintDecimalsB"),V("migrateType"),w("supply"),w("totalSellA"),w("virtualA"),w("virtualB"),w("realA"),w("realB"),w("totalFundRaisingB"),w("protocolFee"),w("platformFee"),w("migrateFee"),Xd.replicate("vestingSchedule"),M("configId"),M("platformId"),M("mintA"),M("mintB"),M("vaultA"),M("vaultB"),M("creator"),V("mintProgramFlag"),V("cpmmCreatorFeeOn"),w("platformVestingShare"),J(V(),54)]),db=v([w(),w("epoch"),M("poolId"),M("beneficiary"),w("claimedAmount"),w("tokenShareAmount"),J(w(),8)]),_s=v([V("migrateType"),V("migrateCpmmFeeOn"),w("supply"),w("totalSellA"),w("totalFundRaisingB"),w("totalLockedAmount"),w("cliffPeriod"),w("unlockPeriod")]),Yd=v([w("epoch"),V("index"),M("configId"),_s.replicate("bondingCurveParam"),J(w(),50)]),Kn=v([w(),w("epoch"),M("platformClaimFeeWallet"),M("platformLockNftWallet"),w("platformScale"),w("creatorScale"),w("burnScale"),w("feeRate"),J(V(),64,"name"),J(V(),256,"web"),J(V(),256,"img"),M("cpConfigId"),w("creatorFeeRate"),M("transferFeeExtensionAuth"),M("platformVestingWallet"),w("platformVestingScale"),M("platformCpCreator"),V("restrictGlobalConfig"),J(V(),107),Bu(Yd,"platformCurve")]);var Hd=Buffer.from("vault_auth_seed","utf8"),Qd=Buffer.from("global_config","utf8"),Zd=Buffer.from("pool_vesting","utf8"),jd=Buffer.from("platform_config","utf8"),$d=Buffer.from("platform_fee_vault_auth_seed","utf8"),Jd=Buffer.from("creator_fee_vault_auth_seed","utf8"),ep=Buffer.from("platform_global_access","utf8"),tp=Buffer.from("platform_allow_config","utf8");function jt(s){return ae([Hd],s)}function Vs(s,e,t,n){return ae([Qd,e.toBuffer(),pb(t),wr(n)],s)}function ii(s,e,t){return ae([kr,e.toBuffer(),t.toBuffer()],s)}function Es(s,e,t){return ae([Za,e.toBuffer(),t.toBuffer()],s)}function lo(s){return ae([Buffer.from("__event_authority","utf8")],s)}function pb(s){let e=new ArrayBuffer(1);return new DataView(e).setUint8(0,s),new Uint8Array(e)}function Ds(s,e){return ae([jd,e.toBuffer()],s)}function ri(s,e,t){return ae([Zd,e.toBuffer(),t.toBuffer()],s)}function Cn(s,e,t){return ae([e.toBuffer(),t.toBuffer()],s)}function Ws(s){return ae([$d],s)}function Rn(s,e,t){return ae([e.toBuffer(),t.toBuffer()],s)}function qs(s){return ae([Jd],s)}function fb(s,e,t){return ae([ep,e.toBuffer(),t.toBuffer()],s)}function Gi(s,e,t){return ae([tp,e.toBuffer(),t.toBuffer()],s)}var Ct={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])};function yb(s,e,t,n,o,i,r,a,c,u,l,d,p,m,f,y,b,g,P,k){throw new Error("*** launchlab initialize has been deprecated, please use initializeV2 instead! ***")}function tl(s,e,t,n,o,i,r,a,c,u,l,d,p,m,f,y,b,g,P,k,I,A,h){let B=v([V("decimals"),Et("name"),Et("symbol"),Et("uri")]),S=v([w("totalLockedAmount"),w("cliffPeriod"),w("unlockPeriod"),V("cpmmCreatorFeeOn")]),K=v([V("index"),w("supply"),w("totalFundRaisingB"),V("migrateType")]),x=v([V("index"),w("supply"),w("totalSellA"),w("totalFundRaisingB"),V("migrateType")]),C=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{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:!0,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Wn.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:An,isSigner:!1,isWritable:!1},{pubkey:Ke.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:Tt,isSigner:!1,isWritable:!1},{pubkey:lo(s).publicKey,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1}];h&&C.push({pubkey:h,isSigner:!1,isWritable:!1});let L=Buffer.alloc(Buffer.from(f,"utf-8").length+Buffer.from(y,"utf-8").length+Buffer.from(b,"utf-8").length+4*3+1),O=Buffer.alloc(S.span),R=Buffer.alloc(g.type==="ConstantCurve"?x.span:K.span);return B.encode({decimals:m,name:f,symbol:y,uri:b},L),g.type==="ConstantCurve"?x.encode(E(N({index:0},g),{migrateType:g.migrateType==="amm"?0:1}),R):g.type==="FixedCurve"?K.encode(E(N({index:1},g),{migrateType:g.migrateType==="amm"?0:1}),R):g.type==="LinearCurve"&&K.encode(E(N({index:2},g),{migrateType:g.migrateType==="amm"?0:1}),R),S.encode({totalLockedAmount:P,cliffPeriod:k,unlockPeriod:I,cpmmCreatorFeeOn:A},O),new Ke.TransactionInstruction({keys:C,programId:s,data:Buffer.from([...Ct.initializeV2,...L,...R,...O])})}function nl(s,e,t,n,o,i,r,a,c,u,l,d,p,m,f,y,b,g,P,k,I,A,h){let B=v([V("decimals"),Et("name"),Et("symbol"),Et("uri")]),S=v([w("totalLockedAmount"),w("cliffPeriod"),w("unlockPeriod"),V("cpmmCreatorFeeOn"),V("transferFeeExtensionParamsOption"),v([ut("transferFeeBasePoints"),w("maxinumFee")]).replicate("transferFeeExtensionParams")]),K=v([V("index"),w("supply"),w("totalFundRaisingB"),V("migrateType")]),x=v([V("index"),w("supply"),w("totalSellA"),w("totalFundRaisingB"),V("migrateType")]),C=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{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:!0,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Wn.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:Ke.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:lo(s).publicKey,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1}];h&&C.push({pubkey:h,isSigner:!1,isWritable:!1});let L=Buffer.alloc(Buffer.from(m,"utf-8").length+Buffer.from(f,"utf-8").length+Buffer.from(y,"utf-8").length+4*3+1),O=Buffer.alloc(S.span),R=Buffer.alloc(b.type==="ConstantCurve"?x.span:K.span);return B.encode({decimals:p,name:m,symbol:f,uri:y},L),b.type==="ConstantCurve"?x.encode(E(N({index:0},b),{migrateType:b.migrateType==="amm"?0:1}),R):b.type==="FixedCurve"?K.encode(E(N({index:1},b),{migrateType:b.migrateType==="amm"?0:1}),R):b.type==="LinearCurve"&&K.encode(E(N({index:2},b),{migrateType:b.migrateType==="amm"?0:1}),R),S.encode({totalLockedAmount:g,cliffPeriod:P,unlockPeriod:k,cpmmCreatorFeeOn:I,transferFeeExtensionParamsOption:A?1:0,transferFeeExtensionParams:A!=null?A:{transferFeeBasePoints:0,maxinumFee:new Jn.default(0)}},O),new Ke.TransactionInstruction({keys:C,programId:s,data:Buffer.from([...Ct.initializeWithToken2022,...L,...R,...O])})}function zi(s,e,t,n,o,i,r,a,c,u,l,d,p,m,f,y,b,g,P,k){let I=v([w("amountB"),w("minAmountA"),w("shareFeeRate")]),A=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:lo(s).publicKey,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1}];k&&A.push({pubkey:k,isSigner:!1,isWritable:!0}),A.push({pubkey:Ke.SystemProgram.programId,isSigner:!1,isWritable:!1}),A.push({pubkey:f,isSigner:!1,isWritable:!0}),A.push({pubkey:y,isSigner:!1,isWritable:!0});let h=Buffer.alloc(I.span);return I.encode({amountB:b,minAmountA:g,shareFeeRate:P!=null?P:new Jn.default(0)},h),new Ke.TransactionInstruction({keys:A,programId:s,data:Buffer.from([...Ct.buyExactIn,...h])})}function ol(s,e,t,n,o,i,r,a,c,u,l,d,p,m,f,y,b,g,P,k){let I=v([w("amountA"),w("maxAmountB"),w("shareFeeRate")]),A=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:lo(s).publicKey,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1}];k&&A.push({pubkey:k,isSigner:!1,isWritable:!0}),A.push({pubkey:Ke.SystemProgram.programId,isSigner:!1,isWritable:!1}),A.push({pubkey:f,isSigner:!1,isWritable:!0}),A.push({pubkey:y,isSigner:!1,isWritable:!0});let h=Buffer.alloc(I.span);return I.encode({amountA:b,maxAmountB:g,shareFeeRate:P!=null?P:new Jn.default(0)},h),new Ke.TransactionInstruction({keys:A,programId:s,data:Buffer.from([...Ct.buyExactOut,...h])})}function Xr(s,e,t,n,o,i,r,a,c,u,l,d,p,m,f,y,b,g,P,k){let I=v([w("amountA"),w("minAmountB"),w("shareFeeRate")]),A=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:lo(s).publicKey,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1}];k&&A.push({pubkey:k,isSigner:!1,isWritable:!0}),A.push({pubkey:Ke.SystemProgram.programId,isSigner:!1,isWritable:!1}),A.push({pubkey:f,isSigner:!1,isWritable:!0}),A.push({pubkey:y,isSigner:!1,isWritable:!0});let h=Buffer.alloc(I.span);return I.encode({amountA:b,minAmountB:g,shareFeeRate:P!=null?P:new Jn.default(0)},h),new Ke.TransactionInstruction({keys:A,programId:s,data:Buffer.from([...Ct.sellExactIn,...h])})}function il(s,e,t,n,o,i,r,a,c,u,l,d,p,m,f,y,b,g,P,k){let I=v([w("amountB"),w("maxAmountA"),w("shareFeeRate")]),A=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:lo(s).publicKey,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1}];k&&A.push({pubkey:k,isSigner:!1,isWritable:!0}),A.push({pubkey:Ke.SystemProgram.programId,isSigner:!1,isWritable:!1}),A.push({pubkey:f,isSigner:!1,isWritable:!0}),A.push({pubkey:y,isSigner:!1,isWritable:!0});let h=Buffer.alloc(I.span);return I.encode({amountB:b,maxAmountA:g,shareFeeRate:P!=null?P:new Jn.default(0)},h),new Ke.TransactionInstruction({keys:A,programId:s,data:Buffer.from([...Ct.sellExactOut,...h])})}function Us(s,e,t,n,o,i,r,a,c){let u=v([]),l=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:Ke.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:Wn.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1}],d=Buffer.alloc(u.span);return u.encode({},d),new Ke.TransactionInstruction({keys:l,programId:s,data:Buffer.from([...Ct.claimVestedToken,...d])})}function Gs(s,e,t,n,o,i){let r=v([w("shareAmount")]),a=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:Ke.SystemProgram.programId,isSigner:!1,isWritable:!1}],c=Buffer.alloc(r.span);return r.encode({shareAmount:i},c),new Ke.TransactionInstruction({keys:a,programId:s,data:Buffer.from([...Ct.createVestingAccount,...c])})}function zs(s,e,t,n,o,i,r,a,c){let u=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,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:c,isSigner:!1,isWritable:!0},{pubkey:Ke.SystemProgram.programId,isSigner:!1,isWritable:!0},{pubkey:Wn.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!0}];return new Ke.TransactionInstruction({keys:u,programId:s,data:Ct.claimPlatformFee})}function rl(s,e,t,n,o,i,r,a,c,u,l,d,p,m,f){let y=v([w("platformScale"),w("creatorScale"),w("burnScale"),w("feeRate"),Et("name"),Et("web"),Et("img"),w("creatorFeeRate"),w("platformVestingScale")]),b=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:Ke.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1}],g=Buffer.alloc(8*6+Buffer.from(d,"utf-8").length+Buffer.from(p,"utf-8").length+Buffer.from(m,"utf-8").length+4*3);return y.encode({platformScale:c.platformScale,creatorScale:c.creatorScale,burnScale:c.burnScale,feeRate:u,name:d,web:p,img:m,creatorFeeRate:l,platformVestingScale:f},g),new Ke.TransactionInstruction({keys:b,programId:s,data:Buffer.from([...Ct.createPlatformConfig,...g])})}function al(s,e,t,n){let o=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0}],i;if(n.type==="updateClaimFeeWallet"){let r=v([V("index"),M("value")]);i=Buffer.alloc(r.span),r.encode({index:0,value:n.value},i)}else if(n.type==="updateLockNftWallet"){let r=v([V("index"),M("value")]);i=Buffer.alloc(r.span),r.encode({index:1,value:n.value},i)}else if(n.type==="migrateCpLockNftScale"){let r=v([V("index"),w("platformScale"),w("creatorScale"),w("burnScale")]);i=Buffer.alloc(r.span),r.encode(N({index:2},n.value),i)}else if(n.type==="updateFeeRate"){let r=v([V("index"),w("value")]);i=Buffer.alloc(r.span),r.encode({index:3,value:n.value},i)}else if(n.type==="updateImg"||n.type==="updateName"||n.type==="updateWeb"){let r=v([V("index"),Et("value")]);i=Buffer.alloc(Buffer.from(n.value,"utf-8").length+4+1*1),n.type==="updateName"?r.encode({index:4,value:n.value},i):n.type==="updateWeb"?r.encode({index:5,value:n.value},i):n.type==="updateImg"&&r.encode({index:6,value:n.value},i)}else if(n.type==="updateCpConfigId"){o.push({pubkey:n.value,isSigner:!1,isWritable:!1});let r=v([V("index")]);i=Buffer.alloc(r.span),r.encode({index:7},i)}else if(n.type==="updateAll"){o.push({pubkey:n.value.cpConfigId,isSigner:!1,isWritable:!1});let r=v([V("index"),M("platformClaimFeeWallet"),M("platformLockNftWallet"),w("platformScale"),w("creatorScale"),w("burnScale"),w("feeRate"),Et("name"),Et("web"),Et("img"),M("transferFeeExtensionAuth"),w("creatorFeeRate"),w("platformVestingScale"),M("platformVestingWallet")]);i=Buffer.alloc(1+32+32+32+8*5+4*3+Buffer.from(n.value.name,"utf-8").length+Buffer.from(n.value.web,"utf-8").length+Buffer.from(n.value.img,"utf-8").length+32+8),r.encode({index:8,platformClaimFeeWallet:n.value.platformClaimFeeWallet,platformLockNftWallet:n.value.platformLockNftWallet,platformVestingWallet:n.value.platformVestingWallet,platformScale:n.value.migrateCpLockNftScale.platformScale,creatorScale:n.value.migrateCpLockNftScale.creatorScale,burnScale:n.value.migrateCpLockNftScale.burnScale,feeRate:n.value.feeRate,name:n.value.name,web:n.value.web,img:n.value.img,transferFeeExtensionAuth:n.value.transferFeeExtensionAuth,creatorFeeRate:n.value.creatorFeeRate,platformVestingScale:n.value.platformVestingScale},i)}else if(n.type==="updateVestingWallet"){let r=v([V("index"),M("value")]);i=Buffer.alloc(r.span),r.encode({index:9,value:n.value},i)}else if(n.type==="updatePlatformVestingScale"){let r=v([V("index"),w("value")]);i=Buffer.alloc(r.span),r.encode({index:10,value:n.value},i)}else if(n.type==="updatePlatformCpCreator"){let r=v([V("index"),M("value")]);i=Buffer.alloc(r.span),r.encode({index:11,value:n.value},i)}else if(n.type==="updateRestrictGlobalConfig"){let r=v([V("index"),w("value")]);i=Buffer.alloc(r.span),r.encode({index:12,value:n.value},i)}else throw Error("updateInfo params type error");return new Ke.TransactionInstruction({keys:o,programId:s,data:Buffer.from([...Ct.updatePlaformConfig,...i])})}function Xs(s,e,t,n,o,i,r,a){let c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Ke.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:Wn.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1}];return new Ke.TransactionInstruction({keys:c,programId:s,data:Ct.claimPlatformFeeFromVault})}function Ys(s,e,t,n,o,i,r){let a=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:Ke.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:Wn.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1}];return new Ke.TransactionInstruction({keys:a,programId:s,data:Ct.claimCreatorFee})}var np=255,el=new Jn.default("18446744073709551615");function bb(s,e,t,n,o,i){let r=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:Ke.SystemProgram.programId,isSigner:!1,isWritable:!1}],a=Buffer.alloc(1*2+8*6+V().span);return V().encode(o,a),_s.encode({migrateType:i.migrateType?i.migrateType:np,migrateCpmmFeeOn:i.migrateCpmmFeeOn?i.migrateCpmmFeeOn:np,supply:i.supply?i.supply:new Jn.default(0),totalSellA:i.totalSellA?i.totalSellA:new Jn.default(0),totalFundRaisingB:i.totalFundRaisingB?i.totalFundRaisingB:new Jn.default(0),totalLockedAmount:i.totalLockedAmount?i.totalLockedAmount:el,cliffPeriod:i.cliffPeriod?i.cliffPeriod:el,unlockPeriod:i.unlockPeriod?i.unlockPeriod:el},a,1),new Ke.TransactionInstruction({keys:r,programId:s,data:Buffer.from([...Ct.updatePlatformCurveParam,...a])})}function gb(s,e,t,n){let o=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0}],i=Buffer.alloc(V().span);return V().encode(n,i),new Ke.TransactionInstruction({keys:o,programId:s,data:Buffer.from([...Ct.removePlatformCurveParam,...i,1,2])})}function sl(s,e,t,n,o,i){let r=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:Ke.SystemProgram.programId,isSigner:!1,isWritable:!1}];return new Ke.TransactionInstruction({keys:r,programId:s,data:Ct.createPlatformVestingAccount})}function ul(s,e,t,n,o){let i=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:Ke.SystemProgram.programId,isSigner:!1,isWritable:!1}];return new Ke.TransactionInstruction({keys:i,programId:s,data:Ct.createPlatformAllowConfig})}function cl(s,e,t,n,o){let i=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0}];return new Ke.TransactionInstruction({keys:i,programId:s,data:Ct.closePlatformAllowConfig})}var ll=(t=>(t[t.OnlyTokenB=0]="OnlyTokenB",t[t.BothToken=1]="BothToken",t))(ll||{});var Xi=require("@solana/spl-token"),op=(t=>(t[t.MintA=0]="MintA",t[t.MintB=1]="MintB",t))(op||{});function ml(s,e){return s>>e&1?Xi.TOKEN_2022_PROGRAM_ID:Xi.TOKEN_PROGRAM_ID}function Yr(s){return ml(s,0)}function Pb(s){return ml(s,1)}function dl({mintAProgram:s,mintBProgram:e}){return(s.equals(Xi.TOKEN_2022_PROGRAM_ID)?1<<0:0)|(e.equals(Xi.TOKEN_2022_PROGRAM_ID)?1<<1:0)}var Hr=re(require("bn.js")),Yi=re(require("decimal.js"));var mo=class{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n}){throw Error()}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:o}){throw Error()}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:n}){throw Error()}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:n,totalFundRaising:o,migrateFee:i,decimalA:r,decimalB:a}){throw Error()}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:n}){throw Error()}static getInitParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:o,migrateFee:i}){throw Error()}static buyExactIn({poolInfo:e,amount:t}){throw Error()}static buyExactOut({poolInfo:e,amount:t}){throw Error()}static sellExactIn({poolInfo:e,amount:t}){throw Error()}static sellExactOut({poolInfo:e,amount:t}){throw Error()}};var Qr=class extends mo{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n}){return new Yi.default(e.virtualB.toString()).div(e.virtualA.toString()).mul(10**(t-n))}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:o}){return new Yi.default(t.toString()).div(e.toString()).mul(10**(n-o))}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:n}){return new Yi.default(e.virtualB.add(e.realB).toString()).div(e.virtualA.sub(e.realA).toString()).mul(10**(t-n))}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:n,totalFundRaising:o,migrateFee:i,decimalA:r,decimalB:a}){return new Yi.default(o.sub(i).toString()).div(e.sub(t).sub(n).toString()).mul(10**(r-a))}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:n}){let o=e.totalSellA.sub(e.realA),i=e.totalFundRaisingB.sub(e.realB);return new Yi.default(e.virtualB.add(e.realB.add(i)).toString()).div(e.virtualA.sub(e.realA.add(o)).toString()).mul(10**(t-n))}static getInitParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:o,migrateFee:i}){if(e.lte(n))throw Error("supply need gt total sell");let r=e.sub(n).sub(o);if(r.lte(new Hr.default(0)))throw Error("supplyMinusSellLocked <= 0");let a=t.sub(i);if(a.lte(new Hr.default(0)))throw Error("tfMinusMf <= 0");let c=a.mul(n).mul(n).div(r),u=a.mul(n).div(r).sub(t),l=c.div(u),d=t.mul(t).div(u);if(l.lt(new Hr.default(0))||d.lt(new Hr.default(0)))throw Error("invalid input 0");return{a:l,b:d,c:n}}static buyExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,inputReserve:e.virtualB.add(e.realB),outputReserve:e.virtualA.sub(e.realA)})}static buyExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,inputReserve:e.virtualB.add(e.realB),outputReserve:e.virtualA.sub(e.realA)})}static sellExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,inputReserve:e.virtualA.sub(e.realA),outputReserve:e.virtualB.add(e.realB)})}static sellExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,inputReserve:e.virtualA.sub(e.realA),outputReserve:e.virtualB.add(e.realB)})}static getAmountOut({amountIn:e,inputReserve:t,outputReserve:n}){let o=e.mul(n),i=t.add(e);return o.div(i)}static getAmountIn({amountOut:e,inputReserve:t,outputReserve:n}){let o=t.mul(e),i=n.sub(e);return xo(o,i)}};var un=re(require("bn.js")),pl=re(require("decimal.js"));var Zr=re(require("bn.js")),Hi=re(require("decimal.js"));var jr=class extends mo{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n}){return new Hi.default(e.virtualB.toString()).div(e.virtualA.toString()).mul(10**(t-n))}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:o}){return new Hi.default(t.toString()).div(e.toString()).mul(10**(n-o))}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:n}){return new Hi.default(e.virtualB.toString()).div(e.virtualA.toString()).mul(10**(t-n))}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:n,totalFundRaising:o,migrateFee:i,decimalA:r,decimalB:a}){return new Hi.default(o.sub(i).toString()).div(e.sub(t).sub(n).toString()).mul(10**(r-a))}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:n}){let o=e.totalSellA.sub(e.realA),i=e.totalFundRaisingB.sub(e.realB);return new Hi.default(e.virtualB.add(e.realB).add(i).toString()).div(e.virtualA.sub(e.realA).add(o).toString()).mul(10**(t-n))}static getInitParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:o,migrateFee:i}){let r=e.sub(o);if(r.lte(new Zr.default(0)))throw Error("invalid input 1");let a=new Zr.default(2).mul(t).sub(i),u=t.mul(r).div(a);if(u.lt(new Zr.default(0))||t.lt(new Zr.default(0)))throw Error("invalid input 0");return{a:u,b:t,c:u}}static buyExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,initInput:e.virtualB,initOutput:e.virtualA})}static buyExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,initInput:e.virtualB,initOutput:e.virtualA})}static sellExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,initInput:e.virtualA,initOutput:e.virtualB})}static sellExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,initInput:e.virtualA,initOutput:e.virtualB})}static getAmountOut({amountIn:e,initInput:t,initOutput:n}){return n.mul(e).div(t)}static getAmountIn({amountOut:e,initInput:t,initOutput:n}){let o=t.mul(e);return xo(o,n)}};var sn=re(require("bn.js")),Ro=re(require("decimal.js"));var ai=re(require("bn.js")),$r=re(require("decimal.js")),Qi=class{static _multipler(e){return new $r.default(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new $r.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 ai.default(o.mul(this._Q64).toFixed(0))}};Qi._Q64=new $r.default(new ai.default(1).shln(64).toString());function Ab({supply:s,totalFundRaisingB:e,totalLockedAmount:t,totalSellA:n,migrateType:o,decimalsA:i}){let r=s.sub(n).sub(t),a=new ai.default(new $r.default(r.mul(e).toString()).sqrt().toFixed(0));if(o==="amm"){if(a.gt(new ai.default(10).pow(new ai.default(i))))return!0}else if(o==="cpmm"){if(a.gt(new ai.default(100)))return!0}else throw Error("migrate type error");return!1}var Jr=class extends mo{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n}){return new Ro.default(0)}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:o}){return new Ro.default(0)}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:n}){return new Ro.default(e.virtualA.mul(e.realA).toString()).div(Qi._Q64).mul(10**(t-n))}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:n,totalFundRaising:o,migrateFee:i,decimalA:r,decimalB:a}){return new Ro.default(o.sub(i).toString()).div(e.sub(t).sub(n).toString()).mul(10**(r-a))}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:n}){let o=e.totalSellA.sub(e.realA),i=e.totalFundRaisingB.sub(e.realB);return new Ro.default(e.virtualB.add(e.realB).add(i).toString()).div(e.virtualA.sub(e.realA).add(o).toString()).mul(10**(t-n))}static getInitParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:o,migrateFee:i}){let r=e.sub(o);if(r.lte(new sn.default(0)))throw Error("supplyMinusLocked need gt 0");let a=t.mul(new sn.default(3)).sub(i),u=t.mul(new sn.default(2)).mul(r).div(a),l=u.mul(u),d=t.mul(new sn.default(2)).mul(ve).div(l);if(!d.gt(new sn.default(0)))throw Error("a need gt 0");if(!En.gt(d))throw Error("a need lt u64 max");if(d.lt(new sn.default(0))||u.lt(new sn.default(0)))throw Error("invalid input 0");return{a:d,b:new sn.default(0),c:u}}static buyExactIn({poolInfo:e,amount:t}){let n=e.realB.add(t),o=new sn.default(2).mul(n).mul(ve).div(e.virtualA);return new sn.default(new Ro.default(o.toString()).sqrt().toFixed(0)).sub(e.realA)}static buyExactOut({poolInfo:e,amount:t}){let n=e.realA.add(t),o=n.mul(n);return xo(e.virtualA.mul(o),new sn.default(2).mul(ve)).sub(e.realB)}static sellExactIn({poolInfo:e,amount:t}){let n=e.realA.sub(t),o=n.mul(n),i=xo(e.virtualA.mul(o),new sn.default(2).mul(ve));return e.realB.sub(i)}static sellExactOut({poolInfo:e,amount:t}){let n=e.realB.sub(t),o=new sn.default(2).mul(n).mul(ve).div(e.virtualA),i=new sn.default(new Ro.default(o.toString()).sqrt().toFixed(0));return e.realA.sub(i)}};var qt=class{static getPoolCurvePointByPoolInfo({curveType:e,pointCount:t,poolInfo:n}){return this.getPoolCurvePointByInit({curveType:e,pointCount:t,supply:n.supply,totalFundRaising:n.totalFundRaisingB,totalSell:n.totalSellA,totalLockedAmount:n.vestingSchedule.totalLockedAmount,migrateFee:n.migrateFee,decimalA:n.mintDecimalsA,decimalB:n.mintDecimalsB})}static getPoolCurvePointByInit({curveType:e,pointCount:t,supply:n,totalFundRaising:o,totalSell:i,totalLockedAmount:r,migrateFee:a,decimalA:c,decimalB:u}){if(t<3)throw Error("point count < 3");let l=this.getCurve(e),d=l.getInitParam({supply:n,totalFundRaising:o,totalSell:i,totalLockedAmount:r,migrateFee:a}),p=l.getPoolInitPriceByInit(E(N({},d),{decimalA:c,decimalB:u})),m=o.div(new un.default(t-1)),f=new un.default(0),y=[{price:p,totalSellSupply:0}],{a:b,b:g}=d,P=f,k=f;for(let I=1;I<t;I++){let A=I!==t-1?m:o.sub(k),h=this.buyExactIn({poolInfo:{virtualA:b,virtualB:g,realA:P,realB:k,totalFundRaisingB:o,totalSellA:i},amountB:A,protocolFeeRate:f,platformFeeRate:f,curveType:e,shareFeeRate:f,creatorFeeRate:f,transferFeeConfigA:void 0,transferFeeConfigB:void 0,slot:0});P=P.add(h.amountA.amount),k=k.add(h.amountB);let B=this.getPrice({poolInfo:{virtualA:b,virtualB:g,realA:P,realB:k},decimalA:c,decimalB:u,curveType:e});y.push({price:B,totalSellSupply:new pl.default(P.toString()).div(10**c).toNumber()})}return y}static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n,curveType:o}){return this.getCurve(o).getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n})}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:o,curveType:i}){return this.getCurve(i).getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:o})}static getPrice({poolInfo:e,curveType:t,decimalA:n,decimalB:o}){return this.getCurve(t).getPoolPrice({poolInfo:e,decimalA:n,decimalB:o})}static getEndPrice({poolInfo:e,curveType:t,decimalA:n,decimalB:o}){return this.getCurve(t).getPoolPrice({poolInfo:e,decimalA:n,decimalB:o})}static getPoolEndPriceReal({poolInfo:e,curveType:t,decimalA:n,decimalB:o}){return this.getCurve(t).getPoolEndPriceReal({poolInfo:e,decimalA:n,decimalB:o})}static checkParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:o,decimals:i,config:r,migrateType:a}){if(Number(i)!==6)throw Error("decimals = 6");if(e.mul(r.maxLockRate).div(et).lt(o))throw Error("total lock amount gte max lock amount");if(e.lt(r.minSupplyA.mul(new un.default(10**i))))throw Error("supply lt min supply");let u=e.mul(r.minSellRateA).div(et);if(n.lt(u))throw Error("invalid input");if(t.lt(r.minFundRaisingB))throw Error("total fund raising lt min fund raising");let l=e.sub(n).sub(o),d=e.mul(r.minMigrateRateA).div(et);if(l.lt(d))throw Error("migrate lt min migrate amoount");let p=e.sub(n).sub(o),m=new un.default(new pl.default(p.mul(t).toString()).sqrt().toFixed(0));if(a==="amm"){let f=new un.default(10).pow(new un.default(i));if(m.lte(f))throw Error("check migrate lp error")}else if(a==="cpmm"){let f=new un.default(100);if(m.lte(f))throw Error("check migrate lp error")}else throw Error("migrate type error")}static buyExactIn({poolInfo:e,amountB:t,protocolFeeRate:n,platformFeeRate:o,curveType:i,shareFeeRate:r,creatorFeeRate:a,transferFeeConfigA:c,transferFeeConfigB:u,slot:l}){var S;let d=Fi(t,u,l),p=t.sub((S=d.fee)!=null?S:new un.default(0)),m=this.totalFeeRate({protocolFeeRate:n,platformFeeRate:o,shareFeeRate:r,creatorFeeRate:a}),f=this.calculateFee({amount:p,feeRate:m}),y=p.sub(f),b=this.getCurve(i),g=b.buyExactIn({poolInfo:e,amount:y}),P=e.totalSellA.sub(e.realA),k,I,A,h;if(g.gt(P)){k=P;let K=b.buyExactOut({poolInfo:e,amount:k}),x=this.calculatePreFee({postFeeAmount:K,feeRate:m});A=x.sub(K);let C=Jo(x,u,l);I=C.amount,h=C.fee}else k=g,I=t,A=f,h=d.fee;let B=this.splitFee({totalFee:A,protocolFeeRate:n,platformFeeRate:o,shareFeeRate:r,creatorFeeRate:a});return{amountA:Fi(k,c,l),amountB:I,splitFee:B,transferFeeB:h}}static buyExactOut({poolInfo:e,amountA:t,protocolFeeRate:n,platformFeeRate:o,curveType:i,shareFeeRate:r,creatorFeeRate:a,transferFeeConfigA:c,transferFeeConfigB:u,slot:l}){let d=e.totalSellA.sub(e.realA),p=Jo(t,c,l),m=p.fee?p.amount.add(p.fee):p.amount;t.gt(d)&&(m=d);let y=this.getCurve(i).buyExactOut({poolInfo:e,amount:m}),b=this.totalFeeRate({protocolFeeRate:n,platformFeeRate:o,shareFeeRate:r,creatorFeeRate:a}),g=this.calculatePreFee({postFeeAmount:y,feeRate:b}),P=g.sub(y),k=Jo(g,u,l),I=this.splitFee({totalFee:P,protocolFeeRate:n,platformFeeRate:o,shareFeeRate:r,creatorFeeRate:a});return{amountA:p,amountB:k.amount,splitFee:I,transferFeeB:k.fee}}static sellExactIn({poolInfo:e,amountA:t,protocolFeeRate:n,platformFeeRate:o,curveType:i,shareFeeRate:r,creatorFeeRate:a,transferFeeConfigA:c,transferFeeConfigB:u,slot:l}){var k;let d=this.getCurve(i),p=Fi(t,c,l),m=p.fee?p.amount.sub(p.fee):p.amount,f=d.sellExactIn({poolInfo:e,amount:m}),y=this.calculateFee({amount:f,feeRate:this.totalFeeRate({protocolFeeRate:n,platformFeeRate:o,shareFeeRate:r,creatorFeeRate:a})}),b=this.splitFee({totalFee:y,protocolFeeRate:n,platformFeeRate:o,shareFeeRate:r,creatorFeeRate:a}),g=f.sub(y),P=Fi(g,u,l);return{amountA:p,amountB:g.sub((k=P.fee)!=null?k:new un.default(0)),splitFee:b,transferFeeB:P.fee}}static sellExactOut({poolInfo:e,amountB:t,protocolFeeRate:n,platformFeeRate:o,curveType:i,shareFeeRate:r,creatorFeeRate:a,transferFeeConfigA:c,transferFeeConfigB:u,slot:l}){let d=this.totalFeeRate({protocolFeeRate:n,platformFeeRate:o,shareFeeRate:r,creatorFeeRate:a}),p=Jo(t,u,l),m=p.amount,f=this.calculatePreFee({postFeeAmount:m,feeRate:d});if(e.realB.lt(f))throw Error("Insufficient liquidity");let y=f.sub(m),g=qt.getCurve(i).sellExactOut({poolInfo:e,amount:f});if(g.gt(e.realA))throw Error();let P=this.splitFee({totalFee:y,protocolFeeRate:n,platformFeeRate:o,shareFeeRate:r,creatorFeeRate:a});return{amountA:Jo(g,c,l),amountB:t,splitFee:P,transferFeeB:p.fee}}static splitFee({totalFee:e,protocolFeeRate:t,platformFeeRate:n,shareFeeRate:o,creatorFeeRate:i}){let r=this.totalFeeRate({protocolFeeRate:t,platformFeeRate:n,shareFeeRate:o,creatorFeeRate:i}),a=r.isZero()?new un.default(0):e.mul(n).div(r),c=r.isZero()?new un.default(0):e.mul(o).div(r),u=r.isZero()?new un.default(0):e.mul(i).div(r),l=e.sub(a).sub(c).sub(u);return{platformFee:a,shareFee:c,protocolFee:l,creatorFee:u}}static calculateFee({amount:e,feeRate:t}){return qi(e,t,et)}static calculatePreFee({postFeeAmount:e,feeRate:t}){if(t.isZero())return e;let n=e.mul(et),o=et.sub(t);return n.add(o).sub(new un.default(1)).div(o)}static totalFeeRate({protocolFeeRate:e,platformFeeRate:t,shareFeeRate:n,creatorFeeRate:o}){if(e.add(t).add(n).add(o).gt(new un.default(1e6)))throw Error("total fee rate gt 1_000_000");return e.add(t).add(n).add(o)}static getCurve(e){switch(e){case 0:return Qr;case 1:return jr;case 2:return Jr}throw Error("find curve error")}};var ie=require("@solana/spl-token"),de=re(require("bn.js")),Oo=require("@solana/web3.js");var pn=re(require("decimal.js")),ea={initPriceX64:new de.default("515752397214619"),supply:new de.default(1e15),totalSellA:new de.default(7931e11),totalFundRaisingB:new de.default(85e9),totalFundRaisingBUSD:new de.default(125e8),totalLockedAmount:new de.default("0"),cliffPeriod:new de.default("0"),unlockPeriod:new de.default("0"),decimals:6,virtualA:new de.default("1073471847374405"),virtualB:new de.default("30050573465"),realA:new de.default(0),realB:new de.default(0),protocolFee:new de.default(0),platformId:new Oo.PublicKey("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new de.default(0),cliffPeriod:new de.default(0),unlockPeriod:new de.default(0),startTime:new de.default(0),totalAllocatedShare:new de.default(0)}},Lo=new de.default(1e4),wb=new Set(["USDCoctVLVnvTXBEuP9s8hntucdJokbo17RwHuNXemT","USD1ttGY1N17NEEHLmELoaybftRBUSErhqYiQzvEmuB"]),ta=class extends st{constructor(e){super(e)}async getMintBTokenInfo({mintB:e,mintBProgram:t,transferFeeConfigB:n,skipCheckMintB:o}){if(e.equals(ie.NATIVE_MINT))return{mintBProgram:ie.TOKEN_PROGRAM_ID,transferFeeConfigB:void 0};if(n)return{mintBProgram:t!=null?t:ie.TOKEN_2022_PROGRAM_ID,transferFeeConfigB:n};if(o||(t==null?void 0:t.equals(ie.TOKEN_PROGRAM_ID)))return{mintBProgram:t!=null?t:ie.TOKEN_PROGRAM_ID,transferFeeConfigB:void 0};let i=await this.scope.connection.getAccountInfo(e);return!i||!i.owner.equals(ie.TOKEN_2022_PROGRAM_ID)?{mintBProgram:t!=null?t:ie.TOKEN_PROGRAM_ID,transferFeeConfigB:void 0}:{mintBProgram:i.owner,transferFeeConfigB:(0,ie.getTransferFeeConfig)((0,ie.unpackMint)(e,i,i.owner))||void 0}}async createLaunchpad(F){var W=F,{programId:e=lt,authProgramId:t,platformId:n=ea.platformId,mintA:o,decimals:i=6,mintBDecimals:r=9,name:a,symbol:c,uri:u,migrateType:l,configId:d,configInfo:p,txVersion:m,computeBudgetConfig:f,txTipConfig:y,feePayer:b,buyAmount:g,minMintAAmount:P,slippage:k,associatedOnly:I=!0,checkCreateATAOwner:A=!1,extraSigners:h,token2022:B,transferFeeExtensionParams:S,creatorFeeOn:K=0,platformAllowConfig:x,mintBProgram:C,transferFeeConfigB:L,skipCheckMintB:O}=W,R=tt(W,["programId","authProgramId","platformId","mintA","decimals","mintBDecimals","name","symbol","uri","migrateType","configId","configInfo","txVersion","computeBudgetConfig","txTipConfig","feePayer","buyAmount","minMintAAmount","slippage","associatedOnly","checkCreateATAOwner","extraSigners","token2022","transferFeeExtensionParams","creatorFeeOn","platformAllowConfig","mintBProgram","transferFeeConfigB","skipCheckMintB"]);var Cl,Rl,Ll,Ol,Nl,Ml,Fl,vl,_l,Vl,El;let D=this.createTxBuilder(b);t=t!=null?t:jt(e).publicKey,B=!!S,B&&(l="cpmm");let X=p;if(!X&&d){let eo=await this.scope.connection.getAccountInfo(d);eo&&(X=co.decode(eo.data))}X||this.logAndCreateError("config not found");let $=X.mintB,H=X.curveType,{mintBProgram:oe,transferFeeConfigB:ue}=await this.getMintBTokenInfo({mintB:$,mintBProgram:C,transferFeeConfigB:L,skipCheckMintB:O}),{publicKey:te}=ii(e,o,$),{publicKey:ge}=Es(e,te,o),{publicKey:ce}=Es(e,te,$),{publicKey:Ie}=Hn(o);this.logDebug(`create token: ${o.toBase58()}, mintB: ${$.toBase58()}, decimals A:${i}/B:${r}, config:${d.toBase58()}`),c.length>10&&this.logAndCreateError("Symbol length should shorter than 11"),u||this.logAndCreateError("uri should not empty");let _e=(await this.scope.api.fetchLaunchConfigs()).find(eo=>eo.key.pubKey===d.toBase58()),Te=(Cl=R==null?void 0:R.supply)!=null?Cl:new de.default(_e.defaultParams.supplyInit),le=(Rl=R==null?void 0:R.totalSellA)!=null?Rl:new de.default(_e.defaultParams.totalSellA),Me=(Ll=R==null?void 0:R.totalFundRaisingB)!=null?Ll:new de.default(_e.defaultParams.totalFundRaisingB),Yt=(Ol=R==null?void 0:R.totalLockedAmount)!=null?Ol:new de.default(0),rt=await this.scope.connection.getAccountInfo(n);rt||this.logAndCreateError("platform id not found:",n.toString());let qn=Kn.decode(rt.data),si=qn.platformVestingScale,ji=qn.feeRate,$i=qt.getCurve(X.curveType).getInitParam({supply:Te,totalFundRaising:Me,totalSell:le,totalLockedAmount:Yt,migrateFee:X.migrateFee}),Jt;try{Jt=await this.scope.token.getTokenInfo($)}catch{this.logDebug("can not get mintB info from getTokenInfo")}let Nn={epoch:new de.default(896),bump:254,status:0,mintDecimalsA:i,mintDecimalsB:(Nl=Jt==null?void 0:Jt.decimals)!=null?Nl:r,supply:Te,totalSellA:le,mintA:new Oo.PublicKey(o),mintB:$,virtualA:$i.a,virtualB:$i.b,realA:ea.realA,realB:ea.realB,migrateFee:X.migrateFee,migrateType:l==="amm"?0:1,protocolFee:ea.protocolFee,platformFee:ji,platformId:n,configId:d,vaultA:ge,vaultB:ce,creator:this.scope.ownerPubKey,totalFundRaisingB:Me,vestingSchedule:{totalLockedAmount:Yt,cliffPeriod:new de.default(0),unlockPeriod:new de.default(0),startTime:new de.default(0),totalAllocatedShare:new de.default(0)},mintProgramFlag:dl({mintAProgram:B?ie.TOKEN_2022_PROGRAM_ID:ie.TOKEN_PROGRAM_ID,mintBProgram:oe}),cpmmCreatorFeeOn:K,platformVestingShare:si!=null?si:new de.default(0)},pp=qt.getCurve(X.curveType),{c:fp}=pp.getInitParam({supply:Nn.supply,totalFundRaising:Nn.totalFundRaisingB,totalLockedAmount:Yt,totalSell:X.curveType===0?Nn.totalSellA:new de.default(0),migrateFee:X.migrateFee});try{qt.checkParam({supply:Nn.supply,totalFundRaising:Nn.totalFundRaisingB,totalSell:fp,totalLockedAmount:Yt,decimals:Nn.mintDecimalsA,config:X,migrateType:l}),this.logDebug("check init params success")}catch(eo){this.logAndCreateError(`check create mint params failed, ${eo.message}`)}D.addInstruction({instructions:[B?nl(e,b!=null?b:this.scope.ownerPubKey,this.scope.ownerPubKey,d,n,t,te,o,$,ge,ce,oe,i,a,c,u||"https://",{type:H===0?"ConstantCurve":H===1?"FixedCurve":H===2?"LinearCurve":"ConstantCurve",totalSellA:le,migrateType:l,supply:Te,totalFundRaisingB:Me},Yt,(Ml=R==null?void 0:R.cliffPeriod)!=null?Ml:new de.default(0),(Fl=R==null?void 0:R.unlockPeriod)!=null?Fl:new de.default(0),K,S,x?Gi(e,n,d).publicKey:void 0):tl(e,b!=null?b:this.scope.ownerPubKey,this.scope.ownerPubKey,d,n,t,te,o,$,ge,ce,Ie,oe,i,a,c,u||"https://",{type:H===0?"ConstantCurve":H===1?"FixedCurve":H===2?"LinearCurve":"ConstantCurve",totalSellA:le,migrateType:l,supply:Te,totalFundRaisingB:Me},Yt,(vl=R==null?void 0:R.cliffPeriod)!=null?vl:new de.default(0),(_l=R==null?void 0:R.unlockPeriod)!=null?_l:new de.default(0),K,x?Gi(e,n,d).publicKey:void 0)]});let eu=B?await this.scope.connection.getEpochInfo():void 0,ua=S?{epoch:BigInt((eu==null?void 0:eu.epoch)||0),maximumFee:BigInt((Vl=S==null?void 0:S.maxinumFee.toString())!=null?Vl:0),transferFeeBasisPoints:(El=S==null?void 0:S.transferFeeBasePoints)!=null?El:0}:void 0,tu={amountA:{amount:new de.default(0),fee:void 0,expirationTime:void 0},amountB:new de.default(0),splitFee:{platformFee:new de.default(0),shareFee:new de.default(0),protocolFee:new de.default(0),creatorFee:new de.default(0)},transferFeeB:void 0},nu;if(h!=null&&h.length&&D.addInstruction({signers:h}),!R.createOnly){let{builder:eo,extInfo:yp}=await this.buyToken({programId:e,authProgramId:t,mintAProgram:B?ie.TOKEN_2022_PROGRAM_ID:void 0,mintA:o,mintB:$,mintBProgram:oe,transferFeeConfigB:ue,skipCheckMintB:!0,poolInfo:Nn,buyAmount:g,minMintAAmount:P,shareFeeRate:R.shareFeeRate,shareFeeReceiver:R.shareFeeReceiver,configInfo:X,platformFeeRate:ji,slippage:k,associatedOnly:I,checkCreateATAOwner:A,skipCheckMintA:!ua,transferFeeConfigA:ua?{transferFeeConfigAuthority:t,withdrawWithheldAuthority:t,withheldAmount:BigInt(0),olderTransferFee:ua,newerTransferFee:ua}:void 0,fromCreate:!0});D.addInstruction(N({},eo.AllTxData)),tu=N({},yp),nu=(this.scope.cluster==="devnet"||m===1)&&R.shareFeeReceiver?[eo.allInstructions[0]]:void 0}return D.addTipInstruction(y),m===0?D.sizeCheckBuildV0({computeBudgetConfig:f,swapInfo:tu,splitIns:nu,address:E(N({},Nn),{poolId:te})}):D.sizeCheckBuild({computeBudgetConfig:f,swapInfo:tu,splitIns:nu,address:E(N({},Nn),{poolId:te})})}async buyToken({programId:e=lt,authProgramId:t,mintA:n,mintAProgram:o=ie.TOKEN_PROGRAM_ID,mintB:i=ie.NATIVE_MINT,poolInfo:r,configInfo:a,platformFeeRate:c,txVersion:u,computeBudgetConfig:l,txTipConfig:d,feePayer:p,buyAmount:m,minMintAAmount:f,slippage:y,shareFeeRate:b=new de.default(0),shareFeeReceiver:g,associatedOnly:P=!0,checkCreateATAOwner:k=!1,fromCreate:I=!1,transferFeeConfigA:A,skipCheckMintA:h=!1,mintBProgram:B,transferFeeConfigB:S,skipCheckMintB:K=!1}){var le,Me,Yt;m.lte(new de.default(0))&&this.logAndCreateError("buy amount should gt 0:",m.toString());let x=this.createTxBuilder(p),{publicKey:C}=ii(e,n,i);t=t!=null?t:jt(e).publicKey;let L=A;if(!h)if(L)o=ie.TOKEN_2022_PROGRAM_ID;else{let rt=await this.scope.connection.getAccountInfo(n);if(rt&&rt.owner.equals(ie.TOKEN_2022_PROGRAM_ID)){o=rt.owner;let qn=(0,ie.unpackMint)(n,rt,o);L=(0,ie.getTransferFeeConfig)(qn)||void 0}}let{mintBProgram:O,transferFeeConfigB:R}=await this.getMintBTokenInfo({mintB:i,mintBProgram:B,transferFeeConfigB:S,skipCheckMintB:K}),F=this.scope.account.getAssociatedTokenAccount(n,o),W=i.equals(ie.NATIVE_MINT),D=I&&W,X=D?this.scope.account.getAssociatedTokenAccount(i,O):null,$=W;if(x.addInstruction({instructions:[(0,ie.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,F,this.scope.ownerPubKey,n,o),...D?[(0,ie.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,X,this.scope.ownerPubKey,i,O),Oo.SystemProgram.transfer({fromPubkey:this.scope.ownerPubKey,toPubkey:X,lamports:BigInt(m.toString())}),(0,ie.createSyncNativeInstruction)(X)]:[]]}),!D){let{account:rt,instructionParams:qn}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:O,mint:i,owner:this.scope.ownerPubKey,createInfo:$?{payer:this.scope.ownerPubKey,amount:m}:void 0,skipCloseAccount:!$,notUseTokenAccount:$,associatedOnly:$?!1:P,checkCreateATAOwner:k});rt&&(X=rt),x.addInstruction(qn||{})}X||this.logAndCreateError(`cannot found mintB(${i.toBase58()}) buy token accounts`,"tokenAccounts",this.scope.account.tokenAccounts);let H=r;if(!H){let rt=await this.scope.connection.getAccountInfo(C,{commitment:"processed"});rt||this.logAndCreateError("cannot found pool:",C.toBase58()),H=Sn.decode(rt.data)}let oe=a,ue=await Ue(this.scope.connection,[oe?void 0:H.configId,H.platformId].filter(Boolean).map(rt=>({pubkey:rt})));if(!oe){let rt=ue.find(qn=>qn.pubkey.equals(H.configId));(!rt||!rt.accountInfo)&&this.logAndCreateError("config not found: ",H.configId.toBase58()),oe=co.decode(rt.accountInfo.data)}let te=ue.find(rt=>rt.pubkey.equals(H.platformId));(!te||!te.accountInfo)&&this.logAndCreateError("platform info not found: ",H.configId.toBase58());let ge=Kn.decode(te.accountInfo.data);c=c||ge.feeRate;let ce=qt.buyExactIn({poolInfo:H,amountB:m,protocolFeeRate:oe.tradeFeeRate,platformFeeRate:c,curveType:oe.curveType,shareFeeRate:b,creatorFeeRate:ge.creatorFeeRate,transferFeeConfigA:L,transferFeeConfigB:R,slot:await this.scope.connection.getSlot()}),Ie=new pn.default(ce.amountA.amount.toString()).sub((Me=(le=ce.amountA.fee)==null?void 0:le.toString())!=null?Me:0),De=y?new pn.default(Lo.sub(y).toNumber()/Lo.toNumber()).clampedTo(0,1):new pn.default(1),_e=f!=null?f:y?new de.default(Ie.mul(De).toFixed(0)):ce.amountA.amount.sub((Yt=ce.amountA.fee)!=null?Yt:new de.default(0));ce.amountB.lt(m)&&console.log(`maximum ${n.toBase58()} amount can buy is ${ce.amountA.toString()}, input ${i.toBase58()} amount: ${ce.amountB.toString()}`);let Te=g?ne(g,i,O).publicKey:void 0;return Te&&x.addInstruction({instructions:[(0,ie.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,Te,g,i,O)]}),x.addInstruction({instructions:[zi(e,this.scope.ownerPubKey,t,H.configId,H.platformId,C,F,X,H.vaultA,H.vaultB,n,i,o,O,Cn(e,H.platformId,i).publicKey,Rn(e,H.creator,i).publicKey,ce.amountB.lt(m)?ce.amountB:m,_e,b,Te)]}),x.addCustomComputeBudget(l),x.addTipInstruction(d),x.versionBuild({txVersion:u,extInfo:E(N({},ce),{decimalOutAmount:Ie,minDecimalOutAmount:new pn.default(_e.toString())})})}async buyTokenExactOut({programId:e=lt,authProgramId:t,mintA:n,mintAProgram:o=ie.TOKEN_PROGRAM_ID,mintB:i=ie.NATIVE_MINT,poolInfo:r,configInfo:a,transferFeeConfigA:c,platformFeeRate:u,txVersion:l,computeBudgetConfig:d,txTipConfig:p,feePayer:m,maxBuyAmount:f,outAmount:y,slippage:b,shareFeeRate:g=new de.default(0),shareFeeReceiver:P,associatedOnly:k=!0,checkCreateATAOwner:I=!1,skipCheckMintA:A=!1,mintBProgram:h,transferFeeConfigB:B,skipCheckMintB:S=!1}){y.lte(new de.default(0))&&this.logAndCreateError("out amount should gt 0:",y.toString());let K=this.createTxBuilder(m),{publicKey:x}=ii(e,n,i);t=t!=null?t:jt(e).publicKey;let C=r;if(!C){let Te=await this.scope.connection.getAccountInfo(x,{commitment:"processed"});Te||this.logAndCreateError("cannot found pool:",x.toBase58()),C=Sn.decode(Te.data)}let L=a,O=await Ue(this.scope.connection,[L?void 0:C.configId,C.platformId].filter(Boolean).map(Te=>({pubkey:Te})));if(!L){let Te=O.find(le=>le.pubkey.equals(C.configId));(!Te||!Te.accountInfo)&&this.logAndCreateError("config not found: ",C.configId.toBase58()),L=co.decode(Te.accountInfo.data)}let R=O.find(Te=>Te.pubkey.equals(C.platformId));(!R||!R.accountInfo)&&this.logAndCreateError("platform info not found: ",C.configId.toBase58());let F=Kn.decode(R.accountInfo.data);u=u||F.feeRate;let W=c;if(!A)if(W)o=ie.TOKEN_2022_PROGRAM_ID;else{let Te=await this.scope.connection.getAccountInfo(n);if(Te&&Te.owner.equals(ie.TOKEN_2022_PROGRAM_ID)){o=Te.owner;let le=(0,ie.unpackMint)(n,Te,o);W=(0,ie.getTransferFeeConfig)(le)||void 0}}let{mintBProgram:D,transferFeeConfigB:X}=await this.getMintBTokenInfo({mintB:i,mintBProgram:h,transferFeeConfigB:B,skipCheckMintB:S}),$=qt.buyExactOut({poolInfo:C,amountA:y,protocolFeeRate:L.tradeFeeRate,platformFeeRate:u,curveType:L.curveType,shareFeeRate:g,creatorFeeRate:F.creatorFeeRate,transferFeeConfigA:W,transferFeeConfigB:X,slot:await this.scope.connection.getSlot()}),H=new pn.default($.amountB.toString()),oe=b?new pn.default(Lo.add(b).toNumber()/Lo.toNumber()).clampedTo(0,Number.MIN_SAFE_INTEGER):new pn.default(1),ue=(f!=null?f:b)?new de.default(H.mul(oe).toFixed(0)):$.amountB,te=this.scope.account.getAssociatedTokenAccount(n,o),ge=null,ce=i.equals(ie.NATIVE_MINT);K.addInstruction({instructions:[(0,ie.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,te,this.scope.ownerPubKey,n,o)]});let{account:Ie,instructionParams:De}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:D,mint:i,owner:this.scope.ownerPubKey,createInfo:ce?{payer:this.scope.ownerPubKey,amount:$.amountB}:void 0,skipCloseAccount:!ce,notUseTokenAccount:ce,associatedOnly:ce?!1:k,checkCreateATAOwner:I});Ie&&(ge=Ie),K.addInstruction(De||{}),ge===void 0&&this.logAndCreateError(`cannot found mintB(${i.toBase58()}) token accounts`,"tokenAccounts",this.scope.account.tokenAccounts);let _e=P?ne(P,i,D).publicKey:void 0;return _e&&K.addInstruction({instructions:[(0,ie.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,_e,P,i,D)]}),K.addInstruction({instructions:[ol(e,this.scope.ownerPubKey,t,C.configId,C.platformId,x,te,ge,C.vaultA,C.vaultB,n,i,o,D,Cn(e,C.platformId,i).publicKey,Rn(e,C.creator,i).publicKey,y,ue,g,_e)]}),K.addCustomComputeBudget(d),K.addTipInstruction(p),K.versionBuild({txVersion:l,extInfo:{maxSpentAmount:ue,outAmount:y}})}async sellToken({programId:e=lt,authProgramId:t,mintAProgram:n=ie.TOKEN_PROGRAM_ID,mintA:o,mintB:i=ie.NATIVE_MINT,poolInfo:r,configInfo:a,platformFeeRate:c,txVersion:u,computeBudgetConfig:l,txTipConfig:d,feePayer:p,sellAmount:m,minAmountB:f,slippage:y,shareFeeRate:b=new de.default(0),shareFeeReceiver:g,associatedOnly:P=!0,checkCreateATAOwner:k=!1,skipCheckMintA:I=!1,mintBProgram:A,transferFeeConfigB:h,skipCheckMintB:B=!1}){t=t!=null?t:jt(e).publicKey;let S=this.createTxBuilder(p);m.lte(new de.default(0))&&this.logAndCreateError("sell amount should be gt 0");let{publicKey:K}=ii(e,o,i),x;if(!I){let le=await this.scope.connection.getAccountInfo(o);if(le&&le.owner.equals(ie.TOKEN_2022_PROGRAM_ID)){n=le.owner;let Me=(0,ie.unpackMint)(o,le,n);x=(0,ie.getTransferFeeConfig)(Me)||void 0}}let{mintBProgram:C,transferFeeConfigB:L}=await this.getMintBTokenInfo({mintB:i,mintBProgram:A,transferFeeConfigB:h,skipCheckMintB:B}),O=null,R=null,F=i.equals(ie.NATIVE_MINT),{account:W,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n,mint:o,owner:this.scope.ownerPubKey,createInfo:void 0,skipCloseAccount:!0,notUseTokenAccount:!1,associatedOnly:P,checkCreateATAOwner:k});W&&(O=W),S.addInstruction(D||{}),O===void 0&&this.logAndCreateError("cannot found mintA token accounts","tokenAccounts",this.scope.account.tokenAccounts);let{account:X,instructionParams:$}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:C,mint:i,owner:this.scope.ownerPubKey,createInfo:F?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!F,notUseTokenAccount:F,associatedOnly:F?!1:P,checkCreateATAOwner:k});X&&(R=X),S.addInstruction($||{}),R===void 0&&this.logAndCreateError("cannot found mintB token accounts","tokenAccounts",this.scope.account.tokenAccounts);let H=r;if(!H){let le=await this.scope.connection.getAccountInfo(K,{commitment:"processed"});le||this.logAndCreateError("cannot found pool",K.toBase58()),H=Sn.decode(le.data)}let oe=a,ue=await Ue(this.scope.connection,[oe?void 0:H.configId,H.platformId].filter(Boolean).map(le=>({pubkey:le})));if(!oe){let le=ue.find(Me=>Me.pubkey.equals(H.configId));(!le||!le.accountInfo)&&this.logAndCreateError("config not found: ",H.configId.toBase58()),oe=co.decode(le.accountInfo.data)}let te=ue.find(le=>le.pubkey.equals(H.platformId));(!te||!te.accountInfo)&&this.logAndCreateError("platform info not found: ",H.configId.toBase58());let ge=Kn.decode(te.accountInfo.data);c=c||ge.feeRate;let ce=qt.sellExactIn({poolInfo:H,amountA:m,protocolFeeRate:oe.tradeFeeRate,platformFeeRate:c,curveType:oe.curveType,shareFeeRate:b,creatorFeeRate:ge.creatorFeeRate,transferFeeConfigA:x,transferFeeConfigB:L,slot:await this.scope.connection.getSlot()}),Ie=new pn.default(ce.amountB.toString()),De=y?new pn.default(Lo.sub(y).toNumber()/Lo.toNumber()).clampedTo(0,1):new pn.default(1),_e=f!=null?f:y?new de.default(Ie.mul(De).toFixed(0)):ce.amountB;_e.lte(new de.default(0))&&this.logAndCreateError(`out ${i.toBase58()} amount should be gt 0`);let Te=g?ne(g,i,C).publicKey:void 0;return Te&&S.addInstruction({instructions:[(0,ie.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,Te,g,i,C)]}),S.addInstruction({instructions:[Xr(e,this.scope.ownerPubKey,t,H.configId,H.platformId,K,O,R,H.vaultA,H.vaultB,o,i,n,C,Cn(e,H.platformId,i).publicKey,Rn(e,H.creator,i).publicKey,ce.amountA.amount.lt(m)?ce.amountA.amount:m,_e,b,Te)]}),S.addCustomComputeBudget(l),S.addTipInstruction(d),S.versionBuild({txVersion:u,extInfo:{outAmount:_e}})}async sellTokenExactOut({programId:e=lt,authProgramId:t,mintAProgram:n=ie.TOKEN_PROGRAM_ID,mintA:o,mintB:i=ie.NATIVE_MINT,poolInfo:r,configInfo:a,platformFeeRate:c,txVersion:u,computeBudgetConfig:l,txTipConfig:d,feePayer:p,inAmount:m,maxSellAmount:f,slippage:y,shareFeeRate:b=new de.default(0),shareFeeReceiver:g,associatedOnly:P=!0,checkCreateATAOwner:k=!1,skipCheckMintA:I=!1,mintBProgram:A,transferFeeConfigB:h,skipCheckMintB:B=!1}){t=t!=null?t:jt(e).publicKey;let S=this.createTxBuilder(p);f!=null&&f.lte(new de.default(0))&&this.logAndCreateError("max sell amount should be gt 0");let{publicKey:K}=ii(e,o,i),x;if(!I){let le=await this.scope.connection.getAccountInfo(o);if(le&&le.owner.equals(ie.TOKEN_2022_PROGRAM_ID)){n=le.owner;let Me=(0,ie.unpackMint)(o,le,n);x=(0,ie.getTransferFeeConfig)(Me)||void 0}}let{mintBProgram:C,transferFeeConfigB:L}=await this.getMintBTokenInfo({mintB:i,mintBProgram:A,transferFeeConfigB:h,skipCheckMintB:B}),O=null,R=null,F=i.equals(ie.NATIVE_MINT),{account:W,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n,mint:o,owner:this.scope.ownerPubKey,createInfo:void 0,skipCloseAccount:!0,notUseTokenAccount:!1,associatedOnly:P,checkCreateATAOwner:k});W&&(O=W),S.addInstruction(D||{}),O===void 0&&this.logAndCreateError("cannot found mintA token accounts","tokenAccounts",this.scope.account.tokenAccounts);let{account:X,instructionParams:$}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:C,mint:i,owner:this.scope.ownerPubKey,createInfo:F?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!F,notUseTokenAccount:F,associatedOnly:F?!1:P,checkCreateATAOwner:k});X&&(R=X),S.addInstruction($||{}),R===void 0&&this.logAndCreateError("cannot found mintB token accounts","tokenAccounts",this.scope.account.tokenAccounts);let H=r;if(!H){let le=await this.scope.connection.getAccountInfo(K,{commitment:"processed"});le||this.logAndCreateError("cannot found pool",K.toBase58()),H=Sn.decode(le.data)}let oe=a,ue=await Ue(this.scope.connection,[oe?void 0:H.configId,H.platformId].filter(Boolean).map(le=>({pubkey:le})));if(!oe){let le=ue.find(Me=>Me.pubkey.equals(H.configId));(!le||!le.accountInfo)&&this.logAndCreateError("config not found: ",H.configId.toBase58()),oe=co.decode(le.accountInfo.data)}let te=ue.find(le=>le.pubkey.equals(H.platformId));(!te||!te.accountInfo)&&this.logAndCreateError("platform info not found: ",H.configId.toBase58());let ge=Kn.decode(te.accountInfo.data);c=c||ge.feeRate;let ce=qt.sellExactOut({poolInfo:H,amountB:m,protocolFeeRate:oe.tradeFeeRate,platformFeeRate:c,curveType:oe.curveType,shareFeeRate:b,creatorFeeRate:ge.creatorFeeRate,transferFeeConfigA:x,transferFeeConfigB:L,slot:await this.scope.connection.getSlot()}),Ie=new pn.default(ce.amountA.amount.toString()),De=y?new pn.default(Lo.add(y).toNumber()/Lo.toNumber()).clampedTo(0,Number.MAX_SAFE_INTEGER):new pn.default(1),_e=(f!=null?f:y)?new de.default(Ie.mul(De).toFixed(0)):ce.amountA.amount,Te=g?ne(g,i,C).publicKey:void 0;return Te&&S.addInstruction({instructions:[(0,ie.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,Te,g,i,C)]}),S.addInstruction({instructions:[il(e,this.scope.ownerPubKey,t,H.configId,H.platformId,K,O,R,H.vaultA,H.vaultB,o,i,n,C,Cn(e,H.platformId,i).publicKey,Rn(e,H.creator,i).publicKey,m,_e,b,Te)]}),S.addCustomComputeBudget(l),S.addTipInstruction(d),S.versionBuild({txVersion:u,extInfo:{maxSellAmount:_e}})}async createPlatformConfig({programId:e=lt,platformAdmin:t,platformClaimFeeWallet:n,platformLockNftWallet:o,platformVestingWallet:i,cpConfigId:r,migrateCpLockNftScale:a,transferFeeExtensionAuth:c,creatorFeeRate:u,feeRate:l,name:d,web:p,img:m,platformVestingScale:f=new de.default(0),txVersion:y,computeBudgetConfig:b,txTipConfig:g,feePayer:P}){let k=this.createTxBuilder(P),{publicKey:I}=Ds(e,t);return k.addInstruction({instructions:[rl(e,t,n,o,i,I,r,c,a,l,u,d,p,m,f)]}),k.addCustomComputeBudget(b),k.addTipInstruction(g),k.versionBuild({txVersion:y,extInfo:{platformId:I}})}async updatePlatformConfig({programId:e=lt,platformAdmin:t,platformId:n,updateInfo:o,txVersion:i,computeBudgetConfig:r,txTipConfig:a,feePayer:c}){let u=this.createTxBuilder(c),l=n!=null?n:Ds(e,t).publicKey;return u.addInstruction({instructions:[al(e,t,l,o)]}),u.addCustomComputeBudget(r),u.addTipInstruction(a),u.versionBuild({txVersion:i})}async createPlatformVestingAccount({programId:e=lt,platformVestingWallet:t,beneficiary:n,platformId:o,poolId:i,vestingRecord:r,txVersion:a,computeBudgetConfig:c,txTipConfig:u,feePayer:l}){let d=this.createTxBuilder(l),p=r!=null?r:ri(e,i,n).publicKey;return d.addInstruction({instructions:[sl(e,t,n,o,i,p)]}),d.addCustomComputeBudget(c),d.addTipInstruction(u),d.versionBuild({txVersion:a})}async claimPlatformFee({programId:e=lt,authProgramId:t,platformId:n,poolId:o,platformClaimFeeWallet:i,mintB:r,vaultB:a,mintBProgram:c,txVersion:u,computeBudgetConfig:l,txTipConfig:d,feePayer:p}){var P;let m=this.createTxBuilder(p);t=t!=null?t:jt(e).publicKey;let f=r,y=a;if(!f){let k=await this.scope.connection.getAccountInfo(o,{commitment:"processed"});k||this.logAndCreateError("cannot found pool:",o.toBase58());let I=Sn.decode(k.data),A=await this.scope.connection.getAccountInfo(I.configId,{commitment:"processed"});A||this.logAndCreateError("cannot found config:",I.configId.toBase58()),f=co.decode(A.data).mintB,y=y!=null?y:I.vaultB}(!f||!y)&&this.logAndCreateError("cannot found mint info, mintB: ",f.toBase58(),", vaultB: ",(P=y==null?void 0:y.toBase58())!=null?P:"");let{mintBProgram:b}=await this.getMintBTokenInfo({mintB:f,mintBProgram:c}),g=ne(this.scope.ownerPubKey,f,b).publicKey;return m.addInstruction({instructions:[(0,ie.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,g,this.scope.ownerPubKey,f,b)]}),m.addInstruction({instructions:[zs(e,i,t,o,n,y,g,f,b)]}),m.addCustomComputeBudget(l),m.addTipInstruction(d),m.versionBuild({txVersion:u})}async claimAllPlatformFee({programId:e=lt,authProgramId:t,platformId:n,platformClaimFeeWallet:o,txVersion:i,computeBudgetConfig:r,txTipConfig:a,feePayer:c}){let u=this.createTxBuilder(c);t=t!=null?t:jt(e).publicKey;let d=(await this.scope.connection.getProgramAccounts(e,{filters:[{dataSize:Sn.span},{memcmp:{offset:Sn.offsetOf("platformId"),bytes:n.toString()}}]})).map(f=>({poolId:f.pubkey,pool:Sn.decode(f.account.data)})).filter(({pool:f})=>f.platformFee.gt(new de.default(0))),p={},m=[...new Set(d.map(({pool:f})=>f.mintB.toBase58()))];return m.length&&(await Ue(this.scope.connection,m.map(y=>({pubkey:new Oo.PublicKey(y)})))).forEach(y=>{var b,g;p[y.pubkey.toBase58()]=(g=(b=y.accountInfo)==null?void 0:b.owner)!=null?g:ie.TOKEN_PROGRAM_ID}),d.forEach(({poolId:f,pool:y})=>{var P;let b=(P=p[y.mintB.toBase58()])!=null?P:ie.TOKEN_PROGRAM_ID,g=ne(this.scope.ownerPubKey,y.mintB,b).publicKey;u.addInstruction({instructions:[(0,ie.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,g,this.scope.ownerPubKey,y.mintB,b)]}),u.addInstruction({instructions:[zs(e,o,t,f,n,y.vaultB,g,y.mintB,b)]})}),u.addTipInstruction(a),i===0?u.sizeCheckBuildV0({computeBudgetConfig:r}):u.sizeCheckBuild({computeBudgetConfig:r})}async createVesting({programId:e=lt,poolId:t,beneficiary:n,shareAmount:o,txVersion:i,computeBudgetConfig:r,txTipConfig:a,feePayer:c}){let u=this.createTxBuilder(c),l=await this.getRpcPoolInfo({poolId:t});o.add(l.vestingSchedule.totalAllocatedShare).gt(l.vestingSchedule.totalLockedAmount)&&this.logAndCreateError("share amount exceed total locked amount");let d=ri(e,t,n).publicKey;return u.addInstruction({instructions:[Gs(e,this.scope.ownerPubKey,n,t,d,o)]}),u.addCustomComputeBudget(r),u.addTipInstruction(a),u.versionBuild({txVersion:i})}async createMultipleVesting({programId:e=lt,poolId:t,beneficiaryList:n,txVersion:o,computeBudgetConfig:i,feePayer:r}){let a=this.createTxBuilder(r);n.length===0&&this.logAndCreateError("beneficiaryList is null");let c=await this.getRpcPoolInfo({poolId:t});return n.reduce((l,d)=>l.add(d.shareAmount),c.vestingSchedule.totalAllocatedShare).gt(c.vestingSchedule.totalLockedAmount)&&this.logAndCreateError("share amount exceed total locked amount"),n.forEach(l=>{let d=ri(e,t,l.wallet).publicKey;a.addInstruction({instructions:[Gs(e,this.scope.ownerPubKey,l.wallet,t,d,l.shareAmount)]})}),o===0?a.sizeCheckBuildV0({computeBudgetConfig:i}):a.sizeCheckBuild({computeBudgetConfig:i})}async claimVesting({programId:e=lt,poolId:t,poolInfo:n,vestingRecord:o,txVersion:i,computeBudgetConfig:r,txTipConfig:a,feePayer:c}){let u=this.createTxBuilder(c),l=jt(e).publicKey,d=o||ri(e,t,this.scope.ownerPubKey).publicKey,p=n;if(!p){let f=await this.scope.connection.getAccountInfo(t);f||this.logAndCreateError("pool not found"),p=Sn.decode(f.data)}let m=ne(this.scope.ownerPubKey,p.mintA,ie.TOKEN_PROGRAM_ID).publicKey;return u.addInstruction({instructions:[(0,ie.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,m,this.scope.ownerPubKey,p.mintA)]}),u.addInstruction({instructions:[Us(e,this.scope.ownerPubKey,l,t,d,m,p.vaultA,p.mintA,ie.TOKEN_PROGRAM_ID)]}),u.addCustomComputeBudget(r),u.addTipInstruction(a),u.versionBuild({txVersion:i})}async claimMultiVesting({programId:e=lt,poolIdList:t,poolsInfo:n={},vestingRecords:o={},txVersion:i,computeBudgetConfig:r,feePayer:a}){let c=this.createTxBuilder(a),u=N({},n),l=jt(e).publicKey,d=t.filter(p=>!u[p.toBase58()]);if(d.length){let p=await this.getRpcPoolsInfo({poolIdList:d});u=N(N({},u),p.poolInfoMap)}return t.forEach(p=>{let m=p.toBase58(),f=u[m];f||this.logAndCreateError(`pool info not found: ${m}`);let y=o[m]||ri(e,p,this.scope.ownerPubKey).publicKey,b=ne(this.scope.ownerPubKey,f.mintA,ie.TOKEN_PROGRAM_ID).publicKey;c.addInstruction({instructions:[(0,ie.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,b,this.scope.ownerPubKey,f.mintA)]}),c.addInstruction({instructions:[Us(e,this.scope.ownerPubKey,l,p,y,b,f.vaultA,f.mintA,ie.TOKEN_PROGRAM_ID)]})}),i===0?c.sizeCheckBuildV0({computeBudgetConfig:r}):c.sizeCheckBuild({computeBudgetConfig:r})}async claimVaultPlatformFee({programId:e=lt,platformId:t,mintB:n,mintBProgram:o,claimFeeWallet:i,txVersion:r,computeBudgetConfig:a,txTipConfig:c,feePayer:u}){let l=this.createTxBuilder(u),d=Cn(e,t,n).publicKey,p=Ws(e).publicKey,{mintBProgram:m}=await this.getMintBTokenInfo({mintB:n,mintBProgram:o}),f=this.scope.account.getAssociatedTokenAccount(n,m);return l.addInstruction({instructions:[(0,ie.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,f,this.scope.ownerPubKey,n,m),Xs(e,t,i!=null?i:this.scope.ownerPubKey,p,d,f,n,m)]}),l.addCustomComputeBudget(a),l.addTipInstruction(c),l.versionBuild({txVersion:r})}async claimMultipleVaultPlatformFee({programId:e=lt,platformList:t,unwrapSol:n=!0,txVersion:o,computeBudgetConfig:i,feePayer:r,associatedOnly:a=!0,checkCreateATAOwner:c=!1}){let u=this.createTxBuilder(r),l={};return t.forEach(async d=>{var b,g,P;let p=Ws(e).publicKey,m=Cn(e,d.id,d.mintB).publicKey,f=d.mintB.equals(ie.NATIVE_MINT)&&n,y=l[d.mintB.toBase58()];if(!y){let{account:k,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:(b=d.mintBProgram)!=null?b:ie.TOKEN_PROGRAM_ID,mint:d.mintB,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!f,notUseTokenAccount:f,associatedOnly:f?!1:a,checkCreateATAOwner:c});k&&(y=k),u.addInstruction(I||{}),y===void 0&&this.logAndCreateError(`cannot found platform ${d.id.toBase58()} mintB(${d.mintB.toBase58()}) token accounts`,"tokenAccounts",this.scope.account.tokenAccounts)}u.addInstruction({instructions:[Xs(e,d.id,(g=d.claimFeeWallet)!=null?g:this.scope.ownerPubKey,p,m,y,d.mintB,(P=d.mintBProgram)!=null?P:ie.TOKEN_PROGRAM_ID)]})}),o===0?u.sizeCheckBuildV0({computeBudgetConfig:i}):u.sizeCheckBuild({computeBudgetConfig:i})}async claimCreatorFee({programId:e=lt,mintB:t,mintBProgram:n,txVersion:o,computeBudgetConfig:i,txTipConfig:r,feePayer:a}){let c=this.createTxBuilder(a),u=Rn(e,this.scope.ownerPubKey,t).publicKey,l=qs(e).publicKey,{mintBProgram:d}=await this.getMintBTokenInfo({mintB:t,mintBProgram:n}),p=this.scope.account.getAssociatedTokenAccount(t,d);return c.addInstruction({instructions:[(0,ie.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,p,this.scope.ownerPubKey,t,d),Ys(e,this.scope.ownerPubKey,l,u,p,t,d)]}),c.addCustomComputeBudget(i),c.addTipInstruction(r),c.versionBuild({txVersion:o})}async claimMultipleCreatorFee({programId:e=lt,mintBList:t,txVersion:n,computeBudgetConfig:o,feePayer:i}){let r=this.createTxBuilder(i);return t.forEach(a=>{var m;let c=a.pubKey,u=(m=a.programId)!=null?m:ie.TOKEN_PROGRAM_ID,l=Rn(e,this.scope.ownerPubKey,c).publicKey,d=qs(e).publicKey,p=this.scope.account.getAssociatedTokenAccount(c,u);r.addInstruction({instructions:[(0,ie.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,p,this.scope.ownerPubKey,c,u),Ys(e,this.scope.ownerPubKey,d,l,p,c,u)]})}),n==0?r.sizeCheckBuildV0({computeBudgetConfig:o}):r.sizeCheckBuild({computeBudgetConfig:o})}async createPlatformAllowConfig({programId:e=lt,platformAdmin:t,platformId:n,configInfo:o,txVersion:i,computeBudgetConfig:r,txTipConfig:a,feePayer:c}){let u=this.createTxBuilder(c),{publicKey:l}=Vs(e,new Oo.PublicKey(o.mintB),o.curveType,o.index),{publicKey:d}=Gi(e,n,l);return u.addInstruction({instructions:[ul(e,t,n,l,d)]}),u.addCustomComputeBudget(r),u.addTipInstruction(a),u.versionBuild({txVersion:i,extInfo:{platformId:n}})}async closePlatformAllowConfig({programId:e=lt,platformAdmin:t,platformId:n,configInfo:o,txVersion:i,computeBudgetConfig:r,txTipConfig:a,feePayer:c}){let u=this.createTxBuilder(c),{publicKey:l}=Vs(e,new Oo.PublicKey(o.mintB),o.curveType,o.index),{publicKey:d}=Gi(e,n,l);return u.addInstruction({instructions:[cl(e,t,n,l,d)]}),u.addCustomComputeBudget(r),u.addTipInstruction(a),u.versionBuild({txVersion:i,extInfo:{platformId:n}})}async getRpcPoolInfo({poolId:e}){return(await this.getRpcPoolsInfo({poolIdList:[e]})).poolInfoMap[e.toBase58()]}async getRpcPoolsInfo({poolIdList:e,config:t}){let n=await Ue(this.scope.connection,e.map(c=>({pubkey:c})),t),o={},i=[];for(let c=0;c<e.length;c++){let u=n[c];if(u===null||!u.accountInfo)throw Error("fetch pool info error: "+e[c].toBase58());let l=Sn.decode(u.accountInfo.data);o[e[c].toBase58()]=E(N({},l),{poolId:e[c],programId:u.accountInfo.owner}),i.push(l.configId)}let r=await Ue(this.scope.connection,i.map(c=>({pubkey:c})),t),a={};for(let c=0;c<i.length;c++){let u=r[c];if(u===null||!u.accountInfo)throw Error("fetch config info error: "+i[c].toBase58());let l=co.decode(u.accountInfo.data);a[i[c].toBase58()]=E(N({},l),{configId:u.accountInfo.owner})}return{poolInfoMap:Object.keys(o).reduce((c,u)=>E(N({},c),{[u]:E(N({},o[u]),{configInfo:a[o[u].configId.toBase58()]})}),{})}}};var fl={[dr.toBase58()]:3},yl={3:dr};var Hs=v([xe(5),xe(8),M("ownAddress"),w("vaultSignerNonce"),M("baseMint"),M("quoteMint"),M("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),M("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),M("requestQueue"),M("eventQueue"),M("bids"),M("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),xe(7)]),bl={3:Hs};var gl=require("@solana/web3.js");var Qs=Se("Serum"),na=class{static getProgramId(e){let t=yl[e];return t||Qs.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=fl[t];return n||Qs.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=bl[e];return t||Qs.logWithError(!!t,"invalid version","version",e),t}static getLayouts(e){return{state:this.getStateLayout(e)}}static getAssociatedAuthority({programId:e,marketId:t}){let n=[t.toBuffer()],o=0,i;for(;o<100;){try{let r=n.concat(Buffer.from([o]),Buffer.alloc(7));i=gl.PublicKey.createProgramAddressSync(r,e)}catch(r){if(r instanceof TypeError)throw r;o++;continue}return{publicKey:i,nonce:o}}return Qs.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:gl.PublicKey.default,nonce:o}}};var Xt=require("@solana/spl-token"),_=require("@solana/web3.js"),Ln=re(require("bn.js"));function kb(s,e,t,n,o,i,r,a,c,u,l,d){let p=v([V("instruction"),w("amountIn"),w("amountOut")]),m=[{pubkey:_.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:Xt.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:new _.PublicKey(t.programId),isSigner:!1,isWritable:!1},{pubkey:new _.PublicKey(t.id),isSigner:!1,isWritable:!0},{pubkey:new _.PublicKey(n.id),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:!0,isWritable:!1}];if(e.type==="Concentrated"){let y=nt(t);m.push({pubkey:y.config.id,isSigner:!1,isWritable:!1},{pubkey:y.id,isSigner:!1,isWritable:!0},{pubkey:y.mintA.address.equals(c)?y.vault.A:y.vault.B,isSigner:!1,isWritable:!0},{pubkey:y.mintA.address.equals(c)?y.vault.B:y.vault.A,isSigner:!1,isWritable:!0},{pubkey:y.id,isSigner:!1,isWritable:!0},...d.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let y=nt(t);m.push({pubkey:y.authority,isSigner:!1,isWritable:!1},{pubkey:y.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:y.id,isSigner:!1,isWritable:!0},{pubkey:new _.PublicKey("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:y.openOrders,isSigner:!1,isWritable:!0},{pubkey:y.vault.A,isSigner:!1,isWritable:!0},{pubkey:y.vault.B,isSigner:!1,isWritable:!0},{pubkey:y.marketId,isSigner:!1,isWritable:!0},{pubkey:y.marketBids,isSigner:!1,isWritable:!0},{pubkey:y.marketAsks,isSigner:!1,isWritable:!0},{pubkey:y.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:y.id,isSigner:!1,isWritable:!0},{pubkey:y.id,isSigner:!1,isWritable:!0})}else{let y=nt(t);m.push({pubkey:y.authority,isSigner:!1,isWritable:!1},{pubkey:y.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:y.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:y.openOrders,isSigner:!1,isWritable:!0},{pubkey:y.vault.A,isSigner:!1,isWritable:!0},{pubkey:y.vault.B,isSigner:!1,isWritable:!0},{pubkey:y.marketId,isSigner:!1,isWritable:!0},{pubkey:y.marketBids,isSigner:!1,isWritable:!0},{pubkey:y.marketAsks,isSigner:!1,isWritable:!0},{pubkey:y.marketEventQueue,isSigner:!1,isWritable:!0},...y.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:y.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:y.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:y.id,isSigner:!1,isWritable:!0},{pubkey:y.id,isSigner:!1,isWritable:!0}])}let f=Buffer.alloc(p.span);return p.encode({instruction:4,amountIn:u,amountOut:l},f),new _.TransactionInstruction({keys:m,programId:s,data:f})}function Tb(s,e,t,n,o,i,r,a,c,u){let l=v([V("instruction")]),d=[{pubkey:_.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:Xt.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:new _.PublicKey(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new _.PublicKey(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new _.PublicKey(String(t.id)),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:!0,isWritable:!1}];if(e.type==="Concentrated"){let m=nt(n);d.push({pubkey:m.config.id,isSigner:!1,isWritable:!1},{pubkey:m.id,isSigner:!1,isWritable:!0},{pubkey:m.mintA.address.equals(c)?m.vault.A:m.vault.B,isSigner:!1,isWritable:!0},{pubkey:m.mintA.address.equals(c)?m.vault.B:m.vault.A,isSigner:!1,isWritable:!0},{pubkey:m.id,isSigner:!1,isWritable:!0},...u.map(f=>({pubkey:f,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let m=nt(n);d.push({pubkey:m.authority,isSigner:!1,isWritable:!1},{pubkey:m.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:m.id,isSigner:!1,isWritable:!0},{pubkey:new _.PublicKey("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:m.openOrders,isSigner:!1,isWritable:!0},{pubkey:m.vault.A,isSigner:!1,isWritable:!0},{pubkey:m.vault.B,isSigner:!1,isWritable:!0},{pubkey:m.marketId,isSigner:!1,isWritable:!0},{pubkey:m.marketBids,isSigner:!1,isWritable:!0},{pubkey:m.marketAsks,isSigner:!1,isWritable:!0},{pubkey:m.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:m.id,isSigner:!1,isWritable:!0},{pubkey:m.id,isSigner:!1,isWritable:!0})}else{let m=nt(n);d.push({pubkey:m.authority,isSigner:!1,isWritable:!1},{pubkey:m.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:m.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:m.openOrders,isSigner:!1,isWritable:!0},{pubkey:m.vault.A,isSigner:!1,isWritable:!0},{pubkey:m.vault.B,isSigner:!1,isWritable:!0},{pubkey:m.marketId,isSigner:!1,isWritable:!0},{pubkey:m.marketBids,isSigner:!1,isWritable:!0},{pubkey:m.marketAsks,isSigner:!1,isWritable:!0},{pubkey:m.marketEventQueue,isSigner:!1,isWritable:!0},...m.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:m.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:m.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:m.id,isSigner:!1,isWritable:!0},{pubkey:m.id,isSigner:!1,isWritable:!0}])}let p=Buffer.alloc(l.span);return l.encode({instruction:5},p),new _.TransactionInstruction({keys:d,programId:s,data:p})}function ip(s,e,t,n,o,i,r,a,c,u,l,d,p,m,f){var h;let y=[],b=[T({pubkey:Xt.TOKEN_PROGRAM_ID,isWritable:!1}),T({pubkey:Xt.TOKEN_2022_PROGRAM_ID,isWritable:!1}),T({pubkey:Xt.ASSOCIATED_TOKEN_PROGRAM_ID,isWritable:!1}),T({pubkey:_.SystemProgram.programId,isWritable:!1}),T({pubkey:e,isSigner:!0})];b.push(T({pubkey:t})),b.push(T({pubkey:o}));let g=[c,u],P=[l,d],k=[i,r,a];for(let B=0;B<g.length;B++){let S=g[B],K=k[B]===S.mintA.address;if(b.push(T({pubkey:new _.PublicKey(S.programId),isWritable:!1})),B===g.length-1?b.push(T({pubkey:o})):b.push(T({pubkey:n})),b.push(T({pubkey:new _.PublicKey(k[B])})),b.push(T({pubkey:new _.PublicKey(k[B+1])})),S.version===6){let x=P[B];b.push(T({pubkey:new _.PublicKey(x.config.id)})),b.push(T({pubkey:new _.PublicKey(x.id)})),b.push(T({pubkey:new _.PublicKey(K?x.vault.A:x.vault.B)})),b.push(T({pubkey:new _.PublicKey(K?x.vault.B:x.vault.A)})),b.push(T({pubkey:new _.PublicKey(S.observationId)})),b.push(T({pubkey:cn})),b.push(T({pubkey:Ze(new _.PublicKey(S.programId),new _.PublicKey(S.id)).publicKey})),y.push(Pl(S.sqrtPriceX64.toString(),K));for(let C of(h=f[B])!=null?h:[])b.push(T({pubkey:new _.PublicKey(C)}))}else if(S.version===5){let x=P[B];b.push(T({pubkey:new _.PublicKey(x.id)})),b.push(T({pubkey:new _.PublicKey(x.authority),isWritable:!1})),b.push(T({pubkey:new _.PublicKey(x.marketProgramId)})),b.push(T({pubkey:new _.PublicKey(x.marketAuthority)})),b.push(T({pubkey:pr,isWritable:!1})),b.push(T({pubkey:new _.PublicKey(x.openOrders)})),b.push(T({pubkey:new _.PublicKey(x.vault.A)})),b.push(T({pubkey:new _.PublicKey(x.vault.B)})),b.push(T({pubkey:new _.PublicKey(x.id)})),b.push(T({pubkey:new _.PublicKey(x.id)})),b.push(T({pubkey:new _.PublicKey(x.id)})),b.push(T({pubkey:new _.PublicKey(x.id)})),b.push(T({pubkey:new _.PublicKey(x.id)})),b.push(T({pubkey:new _.PublicKey(x.id)})),b.push(T({pubkey:new _.PublicKey(x.marketId)})),b.push(T({pubkey:new _.PublicKey(x.marketBids)})),b.push(T({pubkey:new _.PublicKey(x.marketAsks)})),b.push(T({pubkey:new _.PublicKey(x.marketEventQueue)})),b.push(T({pubkey:new _.PublicKey(x.marketBaseVault)})),b.push(T({pubkey:new _.PublicKey(x.marketQuoteVault)}))}else if(S.version===4){let x=P[B],C=S.status!==1;b.push(T({pubkey:new _.PublicKey(x.id)})),b.push(T({pubkey:new _.PublicKey(x.authority),isWritable:!1})),b.push(T({pubkey:new _.PublicKey(C?x.id:x.marketProgramId)})),b.push(T({pubkey:new _.PublicKey(C?x.id:x.marketAuthority)})),b.push(T({pubkey:new _.PublicKey(C?x.id:x.openOrders)})),b.push(T({pubkey:new _.PublicKey(x.vault.A)})),b.push(T({pubkey:new _.PublicKey(x.vault.B)})),b.push(T({pubkey:new _.PublicKey(C?x.id:x.marketId)})),b.push(T({pubkey:new _.PublicKey(C?x.id:x.marketBids)})),b.push(T({pubkey:new _.PublicKey(C?x.id:x.marketAsks)})),b.push(T({pubkey:new _.PublicKey(C?x.id:x.marketEventQueue)})),b.push(T({pubkey:new _.PublicKey(C?x.id:x.marketBaseVault)})),b.push(T({pubkey:new _.PublicKey(C?x.id:x.marketQuoteVault)}))}else if(S.version===7){let x=P[B];b.push(T({pubkey:new _.PublicKey(x.authority)})),b.push(T({pubkey:new _.PublicKey(x.config.id)})),b.push(T({pubkey:new _.PublicKey(x.id)})),b.push(T({pubkey:new _.PublicKey(K?x.vault.A:x.vault.B)})),b.push(T({pubkey:new _.PublicKey(K?x.vault.B:x.vault.A)})),b.push(T({pubkey:new _.PublicKey(S.observationId)}))}else throw Error("pool type error")}let I=v([V("insId"),w("amountIn"),w("amountOut"),J(pe(),y.length,"clmmPriceLimit")]),A=Buffer.alloc(I.span);return I.encode({insId:0,amountIn:p,amountOut:m,clmmPriceLimit:y},A),new _.TransactionInstruction({keys:b,programId:s,data:A})}function Pl(s,e){if(s)if(e){let t=new Ln.default(s).div(new Ln.default(25));return t.gt(Nt.add(pt))?t:Nt.add(pt)}else{let t=new Ln.default(s).mul(new Ln.default(25));return t.lt(Mt.sub(pt))?t:Mt.sub(pt)}else return e?Nt.add(pt):Mt.sub(pt)}function Al({routeProgram:s,ownerInfo:e,inputMint:t,swapInfo:n}){var o,i,r,a,c,u,l,d,p;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let m=n.poolKey[0],f=nt(m),y=t.equals(f.mintA.address)?Nt.add(pt):Mt.sub(pt);return ke.makeSwapBaseInInstructions({poolInfo:m,poolKeys:m,observationId:n.poolInfo[0].observationId,ownerInfo:{wallet:e.wallet,tokenAccountA:f.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:f.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((i=(o=n.minAmountOut.fee)==null?void 0:o.raw)!=null?i:new Ln.default(0)),sqrtPriceLimitX64:y,remainingAccounts:(r=n.remainingAccounts[0])!=null?r:[]})}else if(n.poolInfo[0].version===7){let m=n.poolInfo[0],f=t.toString()===n.poolInfo[0].mintA.address;return{signers:[],instructions:[oi(m.programId,e.wallet,m.authority,m.configId,m.id,e.sourceToken,e.destinationToken,f?m.vaultA:m.vaultB,f?m.vaultB:m.vaultA,f?m.mintProgramA:m.mintProgramB,f?m.mintProgramB:m.mintProgramA,new _.PublicKey(m[f?"mintA":"mintB"].address),new _.PublicKey(m[f?"mintB":"mintA"].address),m.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw)],lookupTableAddress:[],instructionTypes:[f?Y.CpmmSwapBaseIn:Y.CpmmSwapBaseOut],address:{}}}else{let m=n.poolKey[0];return{signers:[],instructions:[n.poolInfo[0].pooltype.includes("StablePool")?Nr({poolKeys:m,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((c=(a=n.minAmountOut.fee)==null?void 0:a.raw)!=null?c:new Ln.default(0)),fixedSide:"in"}):Or({poolKeys:m,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((l=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?l:new Ln.default(0)),fixedSide:"in"})],lookupTableAddress:m.lookupTableAccount?[m.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?Y.AmmV5SwapBaseIn:Y.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let m=n.poolInfo[0],f=n.poolInfo[1],y=n.poolKey[0],b=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[ip(s,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),n.outputMint.toString(),m,f,y,b,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((p=(d=n.minAmountOut.fee)==null?void 0:d.raw)!=null?p:new Ln.default(0)),n.remainingAccounts)],instructionTypes:[Y.RouteSwap],lookupTableAddress:[y.lookupTableAccount,b.lookupTableAccount].filter(g=>g!==void 0),address:{}}}else throw Error("route type error")}function hb({programId:s,wallet:e,amount:t,inputAccount:n,outputAccount:o,routeInfo:i,poolKeys:r}){var p;if(i.success===!1)throw Error("route info error");let a=[],c=[T({pubkey:Xt.TOKEN_PROGRAM_ID,isWritable:!1}),T({pubkey:Xt.TOKEN_2022_PROGRAM_ID,isWritable:!1}),T({pubkey:Xt.ASSOCIATED_TOKEN_PROGRAM_ID,isWritable:!1}),T({pubkey:_.SystemProgram.programId,isWritable:!1}),T({pubkey:e,isSigner:!0})],u={[i.data.inputMint]:n,[i.data.outputMint]:o};c.push(T({pubkey:u[i.data.inputMint]})),c.push(T({pubkey:u[i.data.outputMint]}));for(let m=0;m<r.length;m++){let f=i.data.routePlan[m],y=r[m],b=f.inputMint===y.mintA.address;if(c.push(T({pubkey:new _.PublicKey(y.programId),isWritable:!1})),m===r.length-1)c.push(T({pubkey:u[f.outputMint]}));else{let g=f.outputMint;if(u[g]===void 0){let P=ne(e,new _.PublicKey(g),y.programId===Ht.CLMM_PROGRAM_ID.toBase58()||y.programId===Ht.CREATE_CPMM_POOL_PROGRAM.toBase58()?new _.PublicKey(b?y.mintB.programId:y.mintA.programId):Xt.TOKEN_PROGRAM_ID).publicKey;u[g]=P}c.push(T({pubkey:u[g]}))}if(c.push(T({pubkey:new _.PublicKey(f.inputMint)})),c.push(T({pubkey:new _.PublicKey(f.outputMint)})),y.programId===Ht.CLMM_PROGRAM_ID.toBase58()){let g=y;c.push(T({pubkey:new _.PublicKey(g.config.id)})),c.push(T({pubkey:new _.PublicKey(g.id)})),c.push(T({pubkey:new _.PublicKey(b?g.vault.A:g.vault.B)})),c.push(T({pubkey:new _.PublicKey(b?g.vault.B:g.vault.A)})),c.push(T({pubkey:new _.PublicKey(g.observationId)})),c.push(T({pubkey:cn,isWritable:!1})),c.push(T({pubkey:new _.PublicKey(g.exBitmapAccount)})),a.push(Pl(f.lastPoolPriceX64,b));for(let P of(p=f.remainingAccounts)!=null?p:[])c.push(T({pubkey:new _.PublicKey(P)}))}else if(y.programId===Ht.AMM_STABLE.toBase58()){let g=y;c.push(T({pubkey:new _.PublicKey(g.id)})),c.push(T({pubkey:new _.PublicKey(g.authority),isWritable:!1})),c.push(T({pubkey:new _.PublicKey(g.marketProgramId),isWritable:!1})),c.push(T({pubkey:new _.PublicKey(g.marketAuthority),isWritable:!1})),c.push(T({pubkey:pr,isWritable:!1})),c.push(T({pubkey:new _.PublicKey(g.openOrders)})),c.push(T({pubkey:new _.PublicKey(g.vault.A)})),c.push(T({pubkey:new _.PublicKey(g.vault.B)})),c.push(T({pubkey:new _.PublicKey(g.marketId)})),c.push(T({pubkey:new _.PublicKey(g.marketBids)})),c.push(T({pubkey:new _.PublicKey(g.marketAsks)})),c.push(T({pubkey:new _.PublicKey(g.marketEventQueue)})),c.push(T({pubkey:new _.PublicKey(g.marketBaseVault)})),c.push(T({pubkey:new _.PublicKey(g.marketQuoteVault)}))}else if(y.programId===Ht.AMM_V4.toBase58()){let g=y;c.push(T({pubkey:new _.PublicKey(g.id)})),c.push(T({pubkey:new _.PublicKey(g.authority),isWritable:!1})),c.push(T({pubkey:new _.PublicKey(g.id)})),c.push(T({pubkey:new _.PublicKey(g.id)})),c.push(T({pubkey:new _.PublicKey(g.id)})),c.push(T({pubkey:new _.PublicKey(g.vault.A)})),c.push(T({pubkey:new _.PublicKey(g.vault.B)})),c.push(T({pubkey:new _.PublicKey(g.id)})),c.push(T({pubkey:new _.PublicKey(g.id)})),c.push(T({pubkey:new _.PublicKey(g.id)})),c.push(T({pubkey:new _.PublicKey(g.id)})),c.push(T({pubkey:new _.PublicKey(g.id)})),c.push(T({pubkey:new _.PublicKey(g.id)}))}else if(y.programId===Ht.CREATE_CPMM_POOL_PROGRAM.toBase58()){let g=y;c.push(T({pubkey:new _.PublicKey(g.authority)})),c.push(T({pubkey:new _.PublicKey(g.config.id)})),c.push(T({pubkey:new _.PublicKey(g.id)})),c.push(T({pubkey:new _.PublicKey(b?g.vault.A:g.vault.B)})),c.push(T({pubkey:new _.PublicKey(b?g.vault.B:g.vault.A)})),c.push(T({pubkey:new _.PublicKey(g.observationId)}))}else throw Error("pool type error")}let l=v([V("insId"),w("amountIn"),w("amountOut"),J(pe(),a.length,"clmmPriceLimit")]),d=Buffer.alloc(l.span);return l.encode({insId:0,amountIn:t,amountOut:new Ln.default(i.data.otherAmountThreshold),clmmPriceLimit:a},d),new _.TransactionInstruction({keys:c,programId:s,data:d})}function Ib({programId:s,wallet:e,inputAccount:t,outputAccount:n,routeInfo:o,poolKeys:i}){var d;if(o.success===!1)throw Error("route info error");let r=[],a=[T({pubkey:Xt.TOKEN_PROGRAM_ID,isWritable:!1}),T({pubkey:Xt.TOKEN_2022_PROGRAM_ID,isWritable:!1}),T({pubkey:Xt.ASSOCIATED_TOKEN_PROGRAM_ID,isWritable:!1}),T({pubkey:_.SystemProgram.programId,isWritable:!1}),T({pubkey:e,isSigner:!0})],c={[o.data.inputMint]:t,[o.data.outputMint]:n};for(let p=i.length-1;p>=0;p--){let m=o.data.routePlan[p],f=i[p],y=m.inputMint===f.mintA.address;if(a.push(T({pubkey:new _.PublicKey(f.programId)})),p===0)a.push(T({pubkey:c[m.inputMint]}));else{let b=m.inputMint;if(c[b]===void 0){let g=ne(e,new _.PublicKey(b),f.programId===Ht.CLMM_PROGRAM_ID.toBase58()||f.programId===Ht.CREATE_CPMM_POOL_PROGRAM.toBase58()?new _.PublicKey(y?f.mintA.programId:f.mintB.programId):Xt.TOKEN_PROGRAM_ID).publicKey;c[b]=g}a.push(T({pubkey:c[b]}))}if(p===i.length-1)a.push(T({pubkey:c[m.outputMint]}));else{let b=m.outputMint;if(c[b]===void 0){let g=ne(e,new _.PublicKey(b),f.programId===Ht.CLMM_PROGRAM_ID.toBase58()||f.programId===Ht.CREATE_CPMM_POOL_PROGRAM.toBase58()?new _.PublicKey(y?f.mintB.programId:f.mintA.programId):Xt.TOKEN_PROGRAM_ID).publicKey;c[b]=g}a.push(T({pubkey:c[b]}))}if(a.push(T({pubkey:new _.PublicKey(m.inputMint)})),a.push(T({pubkey:new _.PublicKey(m.outputMint)})),f.programId===Ht.CLMM_PROGRAM_ID.toBase58()){let b=f;a.push(T({pubkey:new _.PublicKey(b.config.id)})),a.push(T({pubkey:new _.PublicKey(b.id)})),a.push(T({pubkey:new _.PublicKey(y?b.vault.A:b.vault.B)})),a.push(T({pubkey:new _.PublicKey(y?b.vault.B:b.vault.A)})),a.push(T({pubkey:new _.PublicKey(b.observationId)})),a.push(T({pubkey:cn,isWritable:!1})),a.push(T({pubkey:new _.PublicKey(b.exBitmapAccount)})),r.push(Pl(m.lastPoolPriceX64,y));for(let g of(d=m.remainingAccounts)!=null?d:[])a.push(T({pubkey:new _.PublicKey(g)}))}else if(f.programId===Ht.AMM_STABLE.toBase58()){let b=f;a.push(T({pubkey:new _.PublicKey(b.id)})),a.push(T({pubkey:new _.PublicKey(b.authority),isWritable:!1})),a.push(T({pubkey:new _.PublicKey(b.marketProgramId),isWritable:!1})),a.push(T({pubkey:new _.PublicKey(b.marketAuthority),isWritable:!1})),a.push(T({pubkey:pr,isWritable:!1})),a.push(T({pubkey:new _.PublicKey(b.openOrders)})),a.push(T({pubkey:new _.PublicKey(b.vault.A)})),a.push(T({pubkey:new _.PublicKey(b.vault.B)})),a.push(T({pubkey:new _.PublicKey(b.marketId)})),a.push(T({pubkey:new _.PublicKey(b.marketBids)})),a.push(T({pubkey:new _.PublicKey(b.marketAsks)})),a.push(T({pubkey:new _.PublicKey(b.marketEventQueue)})),a.push(T({pubkey:new _.PublicKey(b.marketBaseVault)})),a.push(T({pubkey:new _.PublicKey(b.marketQuoteVault)}))}else if(f.programId===Ht.AMM_V4.toBase58()){let b=f;a.push(T({pubkey:new _.PublicKey(b.id)})),a.push(T({pubkey:new _.PublicKey(b.authority),isWritable:!1})),a.push(T({pubkey:new _.PublicKey(b.id)})),a.push(T({pubkey:new _.PublicKey(b.id)})),a.push(T({pubkey:new _.PublicKey(b.id)})),a.push(T({pubkey:new _.PublicKey(b.vault.A)})),a.push(T({pubkey:new _.PublicKey(b.vault.B)})),a.push(T({pubkey:new _.PublicKey(b.id)})),a.push(T({pubkey:new _.PublicKey(b.id)})),a.push(T({pubkey:new _.PublicKey(b.id)})),a.push(T({pubkey:new _.PublicKey(b.id)})),a.push(T({pubkey:new _.PublicKey(b.id)})),a.push(T({pubkey:new _.PublicKey(b.id)}))}else if(f.programId===Ht.CREATE_CPMM_POOL_PROGRAM.toBase58()){let b=f;a.push(T({pubkey:new _.PublicKey(b.authority)})),a.push(T({pubkey:new _.PublicKey(b.config.id)})),a.push(T({pubkey:new _.PublicKey(b.id)})),a.push(T({pubkey:new _.PublicKey(y?b.vault.A:b.vault.B)})),a.push(T({pubkey:new _.PublicKey(y?b.vault.B:b.vault.A)})),a.push(T({pubkey:new _.PublicKey(b.observationId)}))}else throw Error("pool type error")}let u=v([V("insId"),w("amountIn"),w("amountOut"),J(pe(),r.length,"clmmPriceLimit")]),l=Buffer.alloc(u.span);return u.encode({insId:1,amountIn:new Ln.default(o.data.otherAmountThreshold),amountOut:new Ln.default(o.data.outputAmount),clmmPriceLimit:r},l),new _.TransactionInstruction({keys:a,programId:s,data:l})}var Ut=new Be.default(0);function po(s,e){var n,o,i,r,a;let t=(n=s.extensions)==null?void 0:n.feeConfig;if(!!t)return{transferFeeConfigAuthority:ye.PublicKey.default,withdrawWithheldAuthority:ye.PublicKey.default,withheldAmount:BigInt(0),olderTransferFee:{epoch:BigInt((i=(o=t.olderTransferFee.epoch)!=null?o:e)!=null?i:0),maximumFee:BigInt(t.olderTransferFee.maximumFee),transferFeeBasisPoints:t.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt((a=(r=t.newerTransferFee.epoch)!=null?r:e)!=null?a:0),maximumFee:BigInt(t.newerTransferFee.maximumFee),transferFeeBasisPoints:t.newerTransferFee.transferFeeBasisPoints}}}function Zs(s){return s.programId?new ye.PublicKey(s.programId):Pe.TOKEN_PROGRAM_ID}var oa=class extends st{constructor(e){super(e)}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(ee));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n,txVersion:o=1,feePayer:i}=e,r=await this.getWSolAccounts(),a=this.createTxBuilder(i);a.addCustomComputeBudget(e.computeBudgetConfig);let c=me(t);for(let u=0;u<r.length;u++)c.gte(r[u].amount)?(a.addInstruction({instructions:[zn({tokenAccount:r[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),c.sub(r[u].amount)):a.addInstruction({instructions:[zn({tokenAccount:r[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]});return a.versionBuild({txVersion:o})}async wrapWSol(e,t,n,o){let i=this.createTxBuilder(o),r=await oo({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return i.addInstruction(r),i.versionBuild({txVersion:n!=null?n:1})}async swap({swapInfo:e,swapPoolKeys:t,ownerInfo:n,computeBudgetConfig:o,routeProgram:i,txVersion:r,feePayer:a}){let c=this.createTxBuilder(a),u=e.amountIn,l=e.amountOut,d=u.amount.token.mint.equals(ee),p=l.amount.token.mint.equals(ee),m=u.amount.token.mint,f=l.amount.token.mint,{account:y,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.amount.token.isToken2022?Pe.TOKEN_2022_PROGRAM_ID:Pe.TOKEN_PROGRAM_ID,mint:m,notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:d?{payer:this.scope.ownerPubKey,amount:u.amount.raw}:void 0,associatedOnly:d?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});if(b&&c.addInstruction(b),y===void 0)throw Error("input account check error");let g;if(e.routeType==="route"&&!p)g=this.scope.account.getAssociatedTokenAccount(f,l.amount.token.isToken2022?Pe.TOKEN_2022_PROGRAM_ID:Pe.TOKEN_PROGRAM_ID);else{let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:l.amount.token.isToken2022?Pe.TOKEN_2022_PROGRAM_ID:Pe.TOKEN_PROGRAM_ID,mint:f,notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!0,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});g=A,h&&c.addInstruction(h)}p&&c.addInstruction({endInstructions:[zn({owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,tokenAccount:g,programId:Pe.TOKEN_PROGRAM_ID})],endInstructionTypes:[Y.CloseAccount]});let P;if(e.routeType==="route"){let A=e.middleToken;P=this.scope.account.getAssociatedTokenAccount(A.mint,A.isToken2022?Pe.TOKEN_2022_PROGRAM_ID:Pe.TOKEN_PROGRAM_ID)}let k=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),I=Al({routeProgram:i,inputMint:m,swapInfo:E(N({},e),{poolInfo:[...e.poolInfoList],poolKey:k,outputMint:f}),ownerInfo:{wallet:this.scope.ownerPubKey,sourceToken:y,routeToken:P,destinationToken:g}});if(e.feeConfig!==void 0){let A=this.createTxBuilder(),h=u.amount.token.isToken2022?(0,Pe.createTransferCheckedInstruction)(y,u.amount.token.mint,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber(),u.amount.token.decimals,[],Pe.TOKEN_2022_PROGRAM_ID):(0,Pe.createTransferInstruction)(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber());A.addInstruction({instructions:[h],instructionTypes:[Y.TransferAmount]}),A.addInstruction(I);let{transactions:B}=r===0?await A.sizeCheckBuildV0():await A.sizeCheckBuild();B.length<2&&c.addInstruction({instructions:[(0,Pe.createTransferInstruction)(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[Y.TransferAmount]})}return c.addInstruction(I),r===0?c.sizeCheckBuildV0({computeBudgetConfig:o,address:I.address}):c.sizeCheckBuild({computeBudgetConfig:o,address:I.address})}async swapClmmToLaunchMint({inputMint:e,inputAmount:t,fixClmmOut:n=!1,clmmPoolId:o,launchPoolId:i,priceLimit:r,slippage:a=.01,shareFeeRate:c=new Be.default(0),shareFeeReceiver:u,launchPlatformInfo:l,slot:d,mintInfo:p,epochInfo:m,ownerInfo:f={useSOLBalance:!0},checkCreateATAOwner:y=!1,computeBudgetConfig:b,txVersion:g,blockTimestamp:P}){let k=(f==null?void 0:f.feePayer)||this.scope.ownerPubKey,I=m!=null?m:await this.scope.fetchEpochInfo(),{clmmPoolData:A,clmmComputeAmount:{maxClmmAmountIn:h,clmmAmountOut:B,remainingAccounts:S},launchPoolInfo:K,launchAuthProgramId:x,launchSwapInfo:C,launchMintProgramB:L,outAmount:O,minOutAmount:R}=await this.computeClmmToLaunchAmount({inputMint:e,inputAmount:t,fixClmmOut:n,clmmPoolId:o,launchPoolId:i,slippage:a,epochInfo:I,shareFeeRate:c,launchPlatformInfo:l,slot:d,mintInfo:p,blockTimestamp:P}),F=e.toString()===A.poolInfo.mintA.address,W=f.useSOLBalance&&A.poolInfo.mintA.address===ee.toBase58(),D=f.useSOLBalance&&A.poolInfo.mintB.address===ee.toBase58(),X={},$;!r||r.equals(new Ve.default(0))?$=F?Nt.add(new Be.default(1)):Mt.sub(new Be.default(1)):$=se.priceToSqrtPriceX64(r,A.poolInfo.mintA.decimals,A.poolInfo.mintB.decimals);let H=this.createTxBuilder(k),[oe,ue]=[new ye.PublicKey(A.poolInfo.mintA.address),new ye.PublicKey(A.poolInfo.mintB.address)],[te,ge]=[new ye.PublicKey(A.poolInfo.mintA.programId),new ye.PublicKey(A.poolInfo.mintB.programId)],ce=this.scope.account.getAssociatedTokenAccount(oe,te),Ie=this.scope.account.getAssociatedTokenAccount(ue,ge);H.addInstruction({instructions:[(0,Pe.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,ce,this.scope.ownerPubKey,oe,te),(0,Pe.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,Ie,this.scope.ownerPubKey,ue,ge)]}),(F&&W||!F&&D)&&H.addInstruction({instructions:[ye.SystemProgram.transfer({fromPubkey:this.scope.ownerPubKey,toPubkey:F?ce:Ie,lamports:BigInt(h.toString())}),(0,Pe.createSyncNativeInstruction)(F?ce:Ie)]}),X[A.poolInfo.mintA.address]=ce,X[A.poolInfo.mintB.address]=Ie,(!ce||!Ie)&&this.logAndCreateError("user do not have token account",{ownerTokenAccountA:ce,ownerTokenAccountB:Ie}),H.addInstruction(n?ke.makeSwapBaseOutInstructions({poolInfo:A.poolInfo,poolKeys:A.poolKeys,observationId:A.computePoolInfo.observationId,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:ce,tokenAccountB:Ie},outputMint:F?ue:oe,amountOut:B,amountInMax:h,sqrtPriceLimitX64:$,remainingAccounts:S}):ke.makeSwapBaseInInstructions({poolInfo:A.poolInfo,poolKeys:A.poolKeys,observationId:A.computePoolInfo.observationId,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:ce,tokenAccountB:Ie},inputMint:new ye.PublicKey(e),amountIn:t,amountOutMin:B,sqrtPriceLimitX64:$,remainingAccounts:S}));let De=Yr(K.mintProgramFlag),_e=this.scope.account.getAssociatedTokenAccount(K.mintA,De),Te=X[K.mintB.toBase58()];if(H.addInstruction({instructions:[(0,Pe.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,_e,this.scope.ownerPubKey,K.mintA,De)]}),!Te){let le=K.mintB.equals(ee),{account:Me,instructionParams:Yt}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:L,mint:K.mintB,notUseTokenAccount:le,owner:this.scope.ownerPubKey,skipCloseAccount:!le,createInfo:le?{payer:this.scope.ownerPubKey,amount:B}:void 0,associatedOnly:!1,checkCreateATAOwner:y});Te=Me,Yt&&H.addInstruction(Yt)}return H.addInstruction({instructions:[zi(K.programId,this.scope.ownerPubKey,x,K.configId,K.platformId,new ye.PublicKey(i),_e,Te,K.vaultA,K.vaultB,K.mintA,K.mintB,De,L,Cn(K.programId,K.platformId,K.mintB).publicKey,Rn(K.programId,K.creator,K.mintB).publicKey,C.amountB.lt(B)?C.amountB:B,R,c,u)]}),H.addCustomComputeBudget(b),H.versionBuild({txVersion:g,extInfo:{routes:[{mint:new ye.PublicKey(e),amount:n?h:t,decimal:A.poolInfo[F?"mintA":"mintB"].decimals},{mint:F?ue:oe,amount:B,decimal:A.poolInfo[F?"mintB":"mintA"].decimals},{mint:K.mintA,amount:O,decimal:K.mintDecimalsA}],outAmount:O,minOutAmount:R}})}async computeClmmToLaunchAmount({inputMint:e,inputAmount:t,fixClmmOut:n=!1,clmmPoolId:o,launchPoolId:i,slippage:r,epochInfo:a,shareFeeRate:c=new Be.default(0),clmmPoolData:u,launchPoolInfo:l,launchPlatformInfo:d,slot:p,mintInfo:m,blockTimestamp:f}){var D,X;let y=r>0?new Ve.default(r).div(2).toDecimalPlaces(4,Ve.default.ROUND_DOWN).toNumber():r,b=u!=null?u:await this.scope.clmm.getPoolInfoFromRpc(o.toString());if(e.toString()!==b.poolInfo.mintA.address&&e.toString()!==b.poolInfo.mintB.address)throw new Error("input mint does not match clmm pool mints, please check");let g=e.toString()===b.poolInfo.mintA.address,P=b.poolInfo[g?"mintB":"mintA"],k=l;if(k||(k=await this.scope.launchpad.getRpcPoolInfo({poolId:new ye.PublicKey(i)})),P.address!==k.mintB.toBase58())throw new Error(`clmm swap mint(${P.address}) != launch pool mintB(${k.mintB.toBase58()})`);let I=n?await At.computeAmountIn({poolInfo:b.computePoolInfo,tickarrayBitmapExtension:b.computePoolInfo.exBitmapInfo,tickArrayCache:b.tickData[o.toString()],amountOut:t,baseMint:new ye.PublicKey(b.poolInfo[g?"mintB":"mintA"].address),slippage:y,epochInfo:a!=null?a:await this.scope.fetchEpochInfo(),blockTimestamp:f}):await At.computeAmountOutFormat({poolInfo:b.computePoolInfo,tickarrayBitmapExtension:b.computePoolInfo.exBitmapInfo,tickArrayCache:b.tickData[o.toString()],amountIn:t,tokenOut:P,slippage:y,epochInfo:a!=null?a:await this.scope.fetchEpochInfo(),blockTimestamp:f}),A=d;if(!A){let $=await this.scope.connection.getAccountInfo(k.platformId);A=Kn.decode($.data)}let h=m!=null?m:await this.scope.token.getTokenInfo(k.mintA),B=jt(k.programId).publicKey,S=po(h,a==null?void 0:a.epoch),K=Zs(P),x=po(P,a==null?void 0:a.epoch),C=n?t:I.minAmountOut.amount.raw,L=qt.buyExactIn({poolInfo:k,amountB:C,protocolFeeRate:k.configInfo.tradeFeeRate,platformFeeRate:A.feeRate,curveType:k.configInfo.curveType,shareFeeRate:c,creatorFeeRate:A.creatorFeeRate,transferFeeConfigA:S,transferFeeConfigB:x,slot:p!=null?p:await this.scope.connection.getSlot()}),O=L.amountA.amount.sub((D=L.amountA.fee)!=null?D:new Be.default(0)),R=new Ve.default(O.toString()),F=new Be.default(1e4),W=y?new Ve.default(F.sub(new Be.default(y*1e4)).toNumber()/F.toNumber()).clampedTo(0,1):new Ve.default(1);return{clmmPoolData:b,clmmComputeAmount:{maxClmmAmountIn:n?I.maxAmountIn.amount:t,clmmAmountOut:C,remainingAccounts:I.remainingAccounts},clmmComputeInfo:I,launchPoolInfo:k,launchAuthProgramId:B,launchMintTransferFeeConfig:S,launchMintProgramB:K,launchMintTransferFeeConfigB:x,launchSwapInfo:L,outAmount:L.amountA.amount.sub((X=L.amountA.fee)!=null?X:new Be.default(0)),minOutAmount:new Be.default(R.mul(W).toFixed(0))}}async swapLaunchMintToClmm({inputAmount:e,clmmPoolId:t,launchPoolId:n,priceLimit:o,slippage:i=.01,shareFeeRate:r=new Be.default(0),shareFeeReceiver:a,ownerInfo:c={useSOLBalance:!0},checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:d,blockTimestamp:p}){let m=(c==null?void 0:c.feePayer)||this.scope.ownerPubKey,f=await this.scope.fetchEpochInfo(),{clmmPoolData:y,clmmComputeAmount:{remainingAccounts:b},launchPoolInfo:g,launchAuthProgramId:P,launchSwapInfo:k,launchMintProgramB:I,minLaunchOutAmount:A,outAmount:h,minOutAmount:B}=await this.computeLaunchToClmmAmount({inputAmount:e,clmmPoolId:t,launchPoolId:n,slippage:i,epochInfo:f,shareFeeRate:r,blockTimestamp:p}),S=this.createTxBuilder(m),K={},x=Yr(g.mintProgramFlag),{account:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:x,mint:g.mintA,notUseTokenAccount:!1,owner:this.scope.ownerPubKey,skipCloseAccount:!0,createInfo:void 0,associatedOnly:!0,checkCreateATAOwner:u});if(!C)throw new Error(`do not have launch mint(${g.mintA.toString()}) token account`);let L=g.mintB.equals(ee),{account:O,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:I,mint:g.mintB,notUseTokenAccount:L,owner:this.scope.ownerPubKey,skipCloseAccount:!L,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1,checkCreateATAOwner:u});if(R&&S.addInstruction(R),!O)throw new Error(`do not have launch mint(${g.mintA.toString()}) token account`);K[g.mintB.toBase58()]=O,S.addInstruction({instructions:[Xr(g.programId,this.scope.ownerPubKey,P,g.configId,g.platformId,new ye.PublicKey(n),C,O,g.vaultA,g.vaultB,g.mintA,g.mintB,x,I,Cn(g.programId,g.platformId,g.mintB).publicKey,Rn(g.programId,g.creator,g.mintB).publicKey,k.amountA.amount.lt(e)?k.amountA.amount:e,A,r,a)]});let F=g.mintB.toString()===y.poolInfo.mintA.address,W=c.useSOLBalance&&y.poolInfo.mintA.address===ee.toBase58(),D=c.useSOLBalance&&y.poolInfo.mintB.address===ee.toBase58(),X;!o||o.equals(new Ve.default(0))?X=F?Nt.add(new Be.default(1)):Mt.sub(new Be.default(1)):X=se.priceToSqrtPriceX64(o,y.poolInfo.mintA.decimals,y.poolInfo.mintB.decimals);let[$,H]=[new ye.PublicKey(y.poolInfo.mintA.address),new ye.PublicKey(y.poolInfo.mintB.address)],[oe,ue]=[new ye.PublicKey(y.poolInfo.mintA.programId),new ye.PublicKey(y.poolInfo.mintB.programId)],te=W?void 0:this.scope.account.getAssociatedTokenAccount($,oe),ge=D?void 0:this.scope.account.getAssociatedTokenAccount(H,ue);if(!te){let{account:ce,instructionParams:Ie}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:oe,mint:$,notUseTokenAccount:!0,owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:c.feePayer||this.scope.ownerPubKey,amount:F?e:0},associatedOnly:!1,checkCreateATAOwner:u});te=ce,Ie&&S.addInstruction(Ie)}if(!ge){let{account:ce,instructionParams:Ie}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:ue,mint:H,notUseTokenAccount:!0,owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:c.feePayer||this.scope.ownerPubKey,amount:F?0:e},associatedOnly:!1,checkCreateATAOwner:u});ge=ce,Ie&&S.addInstruction(Ie)}return K[y.poolInfo.mintA.address]=te,K[y.poolInfo.mintB.address]=ge,(!te||!ge)&&this.logAndCreateError("user do not have token account",{ownerTokenAccountA:te,ownerTokenAccountB:ge}),S.addInstruction(ke.makeSwapBaseInInstructions({poolInfo:y.poolInfo,poolKeys:y.poolKeys,observationId:y.computePoolInfo.observationId,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:te,tokenAccountB:ge},inputMint:new ye.PublicKey(y.poolKeys[F?"mintA":"mintB"].address),amountIn:A,amountOutMin:B,sqrtPriceLimitX64:X,remainingAccounts:b})),S.addCustomComputeBudget(l),S.versionBuild({txVersion:d,extInfo:{routes:[{mint:g.mintA,amount:e,decimal:g.mintDecimalsA},{mint:g.mintB,amount:A,decimal:g.mintDecimalsB},{mint:new ye.PublicKey(y.poolKeys[F?"mintB":"mintA"].address),amount:h,decimal:y.poolKeys[F?"mintB":"mintA"].decimals}],outAmount:h,minOutAmount:B}})}async computeLaunchToClmmAmount({inputAmount:e,clmmPoolId:t,launchPoolId:n,slippage:o,epochInfo:i,shareFeeRate:r=new Be.default(0),clmmPoolData:a,launchPoolInfo:c,launchPlatformInfo:u,blockTimestamp:l}){let d=o>0?new Ve.default(o).div(2).toDecimalPlaces(4,Ve.default.ROUND_DOWN).toNumber():o,p=c;p||(p=await this.scope.launchpad.getRpcPoolInfo({poolId:new ye.PublicKey(n)}));let m=p.mintB,f=a!=null?a:await this.scope.clmm.getPoolInfoFromRpc(t.toString());if(m.toString()!==f.poolInfo.mintA.address&&m.toString()!==f.poolInfo.mintB.address)throw new Error("input mint does not match clmm pool mints, please check");let y=m.toString()===f.poolInfo.mintA.address,b=f.poolInfo[y?"mintB":"mintA"],g=f.poolInfo[y?"mintA":"mintB"],P=u;if(!P){let F=await this.scope.connection.getAccountInfo(p.platformId);P=Kn.decode(F.data)}let k=await this.scope.token.getTokenInfo(p.mintA),I=jt(p.programId).publicKey,A=po(k,i==null?void 0:i.epoch),h=Zs(g),B=po(g,i==null?void 0:i.epoch),S=qt.sellExactIn({poolInfo:p,amountA:e,protocolFeeRate:p.configInfo.tradeFeeRate,platformFeeRate:P.feeRate,curveType:p.configInfo.curveType,shareFeeRate:r,creatorFeeRate:P.creatorFeeRate,transferFeeConfigA:A,transferFeeConfigB:B,slot:await this.scope.connection.getSlot()}),K=S.amountB,x=new Ve.default(K.toString()),C=new Be.default(1e4),L=d?new Ve.default(C.sub(new Be.default(d*1e4)).toNumber()/C.toNumber()).clampedTo(0,1):new Ve.default(1),O=new Be.default(x.mul(L).toFixed(0)),R=await At.computeAmountOutFormat({poolInfo:f.computePoolInfo,tickarrayBitmapExtension:f.computePoolInfo.exBitmapInfo,tickArrayCache:f.tickData[t.toString()],amountIn:O,tokenOut:b,slippage:d,epochInfo:i!=null?i:await this.scope.fetchEpochInfo(),blockTimestamp:l});return{clmmPoolData:f,clmmComputeAmount:R,launchPoolInfo:p,launchAuthProgramId:I,launchMintTransferFeeConfig:A,launchMintProgramB:h,launchMintTransferFeeConfigB:B,launchSwapInfo:S,minLaunchOutAmount:O,outAmount:R.amountOut.amount.raw,minOutAmount:R.minAmountOut.amount.raw}}async swapCpmmToLaunchMint({inputMint:e,inputAmount:t,cpmmPoolId:n,launchPoolId:o,poolKeys:i,slippage:r=.01,shareFeeRate:a=new Be.default(0),shareFeeReceiver:c,launchPlatformInfo:u,slot:l,mintInfo:d,epochInfo:p,ownerInfo:m={useSOLBalance:!0},checkCreateATAOwner:f=!1,computeBudgetConfig:y,txVersion:b}){let g=(m==null?void 0:m.feePayer)||this.scope.ownerPubKey,P=p!=null?p:await this.scope.fetchEpochInfo(),{computePoolInfo:k,poolKeys:I}=await this.scope.cpmm.getPoolInfoFromRpc(n.toString()),{cpmmComputInfo:A,cpmmPoolData:h,launchPoolInfo:B,launchAuthProgramId:S,launchSwapInfo:K,launchMintProgramB:x,outAmount:C,minOutAmount:L}=await this.computeCpmmToLaunchAmount({inputMint:e,inputAmount:t,cpmmPoolId:n,cpmmPoolData:k,launchPoolId:o,slippage:r,epochInfo:P,shareFeeRate:a,launchPlatformInfo:u,slot:l,mintInfo:d}),O=e.toString()===h.mintA.address,R=m.useSOLBalance&&h.mintA.address===ee.toBase58(),F=m.useSOLBalance&&h.mintB.address===ee.toBase58(),W={},D=this.createTxBuilder(g),[X,$]=[new ye.PublicKey(h.mintA.address),new ye.PublicKey(h.mintB.address)],[H,oe]=[new ye.PublicKey(h.mintA.programId),new ye.PublicKey(h.mintB.programId)],ue=this.scope.account.getAssociatedTokenAccount(X,H),te=this.scope.account.getAssociatedTokenAccount($,oe);D.addInstruction({instructions:[(0,Pe.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,ue,this.scope.ownerPubKey,X,H),(0,Pe.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,te,this.scope.ownerPubKey,$,oe)]}),(O&&R||!O&&F)&&D.addInstruction({instructions:[ye.SystemProgram.transfer({fromPubkey:this.scope.ownerPubKey,toPubkey:O?ue:te,lamports:BigInt(A.amountIn.toString())}),(0,Pe.createSyncNativeInstruction)(O?ue:te)]}),W[h.mintA.address]=ue,W[h.mintB.address]=te,(!ue||!te)&&this.logAndCreateError("user do not have token account",{ownerTokenAccountA:ue,ownerTokenAccountB:te});let ge=i!=null?i:I;D.addInstruction({instructions:[oi(h.programId,this.scope.ownerPubKey,new ye.PublicKey(ge.authority),new ye.PublicKey(ge.config.id),h.id,O?ue:te,O?te:ue,new ye.PublicKey(ge.vault[O?"A":"B"]),new ye.PublicKey(ge.vault[O?"B":"A"]),new ye.PublicKey(O?H:oe!=null?oe:Pe.TOKEN_PROGRAM_ID),new ye.PublicKey(O?oe:H!=null?H:Pe.TOKEN_PROGRAM_ID),O?X:$,O?$:X,Co(h.programId,h.id).publicKey,t,A.swapResult.outputAmount)]});let ce=Yr(B.mintProgramFlag),Ie=this.scope.account.getAssociatedTokenAccount(B.mintA,ce),De=W[B.mintB.toBase58()];if(D.addInstruction({instructions:[(0,Pe.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,Ie,this.scope.ownerPubKey,B.mintA,ce)]}),!De){let _e=B.mintB.equals(ee),{account:Te,instructionParams:le}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:x,mint:B.mintB,notUseTokenAccount:_e,owner:this.scope.ownerPubKey,skipCloseAccount:!_e,createInfo:_e?{payer:this.scope.ownerPubKey,amount:A.minAmountOut}:void 0,associatedOnly:!1,checkCreateATAOwner:f});De=Te,le&&D.addInstruction(le)}return D.addInstruction({instructions:[zi(B.programId,this.scope.ownerPubKey,S,B.configId,B.platformId,new ye.PublicKey(o),Ie,De,B.vaultA,B.vaultB,B.mintA,B.mintB,ce,x,Cn(B.programId,B.platformId,B.mintB).publicKey,Rn(B.programId,B.creator,B.mintB).publicKey,K.amountB.lt(A.minAmountOut)?K.amountB:A.minAmountOut,L,a,c)]}),D.addCustomComputeBudget(y),D.versionBuild({txVersion:b,extInfo:{routes:[{mint:new ye.PublicKey(e),amount:t,decimal:h[O?"mintDecimalA":"mintDecimalB"]},{mint:O?$:X,amount:A.minAmountOut,decimal:h[O?"mintB":"mintA"].decimals},{mint:B.mintA,amount:C,decimal:B.mintDecimalsA}],outAmount:C,minOutAmount:L}})}async computeCpmmToLaunchAmount({inputMint:e,inputAmount:t,cpmmPoolId:n,launchPoolId:o,slippage:i,epochInfo:r,shareFeeRate:a=new Be.default(0),cpmmPoolData:c,launchPoolInfo:u,launchPlatformInfo:l,slot:d,mintInfo:p}){var F,W;let m=i>0?new Ve.default(i).div(2).toDecimalPlaces(4,Ve.default.ROUND_DOWN).toNumber():i,f=c!=null?c:(await this.scope.cpmm.getPoolInfoFromRpc(n.toString())).computePoolInfo;if(e.toString()!==f.mintA.address&&e.toString()!==f.mintB.address)throw new Error("input mint does not match clmm pool mints, please check");let y=e.toString()===f.mintA.address,b=f[y?"mintB":"mintA"],g=u;if(g||(g=await this.scope.launchpad.getRpcPoolInfo({poolId:new ye.PublicKey(o)})),b.address!==g.mintB.toBase58())throw new Error(`clmm swap mint(${b.address}) != launch pool mintB(${g.mintB.toBase58()})`);let P=l;if(!P){let D=await this.scope.connection.getAccountInfo(g.platformId);P=Kn.decode(D.data)}let k=p!=null?p:await this.scope.token.getTokenInfo(g.mintA),I=jt(g.programId).publicKey,A=po(k,r==null?void 0:r.epoch),h=Zs(b),B=po(b,r==null?void 0:r.epoch),S=await this.scope.cpmm.computeSwapAmount({pool:f,amountIn:t,outputMint:new ye.PublicKey(b.address),slippage:m}),K=S.minAmountOut,x=qt.buyExactIn({poolInfo:g,amountB:K,protocolFeeRate:g.configInfo.tradeFeeRate,platformFeeRate:P.feeRate,curveType:g.configInfo.curveType,shareFeeRate:a,creatorFeeRate:P.creatorFeeRate,transferFeeConfigA:A,transferFeeConfigB:B,slot:d!=null?d:await this.scope.connection.getSlot()}),C=x.amountA.amount.sub((F=x.amountA.fee)!=null?F:new Be.default(0)),L=new Ve.default(C.toString()),O=new Be.default(1e4),R=m?new Ve.default(O.sub(new Be.default(m*1e4)).toNumber()/O.toNumber()).clampedTo(0,1):new Ve.default(1);return{cpmmPoolData:f,cpmmComputInfo:S,launchPoolInfo:g,launchAuthProgramId:I,launchMintTransferFeeConfig:A,launchMintProgramB:h,launchMintTransferFeeConfigB:B,launchSwapInfo:x,outAmount:x.amountA.amount.sub((W=x.amountA.fee)!=null?W:new Be.default(0)),minOutAmount:new Be.default(L.mul(R).toFixed(0))}}async computeCpClToLaunchAmount({inputMint:e,inputAmount:t,clmmPoolId:n,cpmmPoolId:o,launchPoolId:i,slippage:r,epochInfo:a,shareFeeRate:c=new Be.default(0),cpmmPoolData:u,clmmPoolData:l,launchPoolInfo:d,launchPlatformInfo:p,slot:m,mintInfo:f,blockTimestamp:y}){var te,ge;let b=r>0?new Ve.default(r).div(2).toDecimalPlaces(4,Ve.default.ROUND_DOWN).toNumber():r,g=l!=null?l:await this.scope.clmm.getPoolInfoFromRpc(n.toString());if(e.toString()!==g.poolInfo.mintA.address&&e.toString()!==g.poolInfo.mintB.address)throw new Error("input mint does not match clmm pool mints, please check");let P=e.toString()===g.poolInfo.mintA.address,k=g.poolInfo[P?"mintB":"mintA"],I=d;if(I||(I=await this.scope.launchpad.getRpcPoolInfo({poolId:new ye.PublicKey(i)})),k.address!==I.mintB.toBase58())throw new Error(`clmm swap mint(${k.address}) != launch pool mintB(${I.mintB.toBase58()})`);let A=p;if(!A){let ce=await this.scope.connection.getAccountInfo(I.platformId);A=Kn.decode(ce.data)}let h=f!=null?f:await this.scope.token.getTokenInfo(I.mintA),B=jt(I.programId).publicKey,S=po(h,a==null?void 0:a.epoch),K=Zs(k),x=po(k,a==null?void 0:a.epoch),C=await At.computeAmountOutFormat({poolInfo:g.computePoolInfo,tickArrayCache:g.tickData[n.toString()],amountIn:t,tokenOut:k,slippage:b,epochInfo:a!=null?a:await this.scope.fetchEpochInfo(),blockTimestamp:y,tickarrayBitmapExtension:g.computePoolInfo.exBitmapInfo}),L=u!=null?u:(await this.scope.cpmm.getPoolInfoFromRpc(o.toString())).computePoolInfo,O=await this.scope.cpmm.computeSwapAmount({pool:L,amountIn:t,outputMint:new ye.PublicKey(k.address),slippage:b}),[R,F]=[C.minAmountOut.amount.raw,O.minAmountOut],W=R.gte(F)?"clmm":"cpmm",D=R.gte(F)?R:F,X=qt.buyExactIn({poolInfo:I,amountB:D,protocolFeeRate:I.configInfo.tradeFeeRate,platformFeeRate:A.feeRate,curveType:I.configInfo.curveType,shareFeeRate:c,creatorFeeRate:A.creatorFeeRate,transferFeeConfigA:S,transferFeeConfigB:x,slot:m!=null?m:await this.scope.connection.getSlot()}),$=X.amountA.amount.sub((te=X.amountA.fee)!=null?te:new Be.default(0)),H=new Ve.default($.toString()),oe=new Be.default(1e4),ue=b?new Ve.default(oe.sub(new Be.default(b*1e4)).toNumber()/oe.toNumber()).clampedTo(0,1):new Ve.default(1);return{clmmPoolData:g,clmmComputeAmount:{maxClmmAmountIn:t,clmmAmountOut:D,remainingAccounts:C.remainingAccounts},clmmComputeInfo:C,cpmmComputInfo:O,swapPoolType:W,launchPoolInfo:I,launchAuthProgramId:B,launchMintTransferFeeConfig:S,launchMintProgramB:K,launchMintTransferFeeConfigB:x,launchSwapInfo:X,outAmount:X.amountA.amount.sub((ge=X.amountA.fee)!=null?ge:new Be.default(0)),minOutAmount:new Be.default(H.mul(ue).toFixed(0))}}async fetchRoutePoolBasicInfo(e){let{amm:t=fi,clmm:n=_n,cpmm:o=Xn}=e||{},i=await this.scope.connection.getProgramAccounts(t,{dataSlice:{offset:vi.offsetOf("baseMint"),length:64}}),r=v([M("baseMint"),M("quoteMint")]),a=i.map(m=>({id:m.pubkey,version:4,mintA:r.decode(m.account.data).baseMint,mintB:r.decode(m.account.data).quoteMint})),c=v([M("mintA"),M("mintB")]),l=(await this.scope.connection.getProgramAccounts(n,{filters:[{dataSize:To.span}],dataSlice:{offset:To.offsetOf("mintA"),length:64}})).map(m=>{let f=c.decode(m.account.data);return{id:m.pubkey,version:6,mintA:f.mintA,mintB:f.mintB}}),p=(await this.scope.connection.getProgramAccounts(o,{dataSlice:{offset:Gr.offsetOf("mintA"),length:64}})).map(m=>{let f=c.decode(m.account.data);return{id:m.pubkey,version:7,mintA:f.mintA,mintB:f.mintB}});return{clmmPools:l,ammPools:a,cpmmPools:p}}getAllRoute({inputMint:e,outputMint:t,clmmPools:n,ammPools:o,cpmmPools:i}){e=e.toString()===ye.PublicKey.default.toString()?ee:e,t=t.toString()===ye.PublicKey.default.toString()?ee:t;let r={},a={},c={},u=[],l={};for(let p of n!=null?n:[]){if((p.mintA.equals(e)&&p.mintB.equals(t)||p.mintA.equals(t)&&p.mintB.equals(e))&&(u.push(p),a[p.id.toString()]=p),p.mintA.equals(e)){let m=p.mintB.toString();l[m]===void 0&&(l[m]={mintProgram:Pe.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),l[m].in.push(p)}if(p.mintB.equals(e)){let m=p.mintA.toString();l[m]===void 0&&(l[m]={mintProgram:Pe.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),l[m].in.push(p)}if(p.mintA.equals(t)){let m=p.mintB.toString();l[m]===void 0&&(l[m]={mintProgram:Pe.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),l[m].out.push(p)}if(p.mintB.equals(t)){let m=p.mintA.toString();l[m]===void 0&&(l[m]={mintProgram:Pe.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),l[m].out.push(p)}}let d=[];for(let p of o)(p.mintA.equals(e)&&p.mintB.equals(t)||p.mintA.equals(t)&&p.mintB.equals(e))&&(u.push(p),r[p.id.toBase58()]=p,d.push(p)),p.mintA.equals(e)&&(l[p.mintB.toBase58()]===void 0&&(l[p.mintB.toBase58()]={mintProgram:Pe.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),l[p.mintB.toBase58()].in.push(p)),p.mintB.equals(e)&&(l[p.mintA.toBase58()]===void 0&&(l[p.mintA.toBase58()]={mintProgram:Pe.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),l[p.mintA.toBase58()].in.push(p)),p.mintA.equals(t)&&(l[p.mintB.toBase58()]===void 0&&(l[p.mintB.toBase58()]={mintProgram:Pe.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),l[p.mintB.toBase58()].out.push(p)),p.mintB.equals(t)&&(l[p.mintA.toBase58()]===void 0&&(l[p.mintA.toBase58()]={mintProgram:Pe.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),l[p.mintA.toBase58()].out.push(p));for(let p of i)(p.mintA.equals(e)&&p.mintB.equals(t)||p.mintA.equals(t)&&p.mintB.equals(e))&&(u.push(p),c[p.id.toBase58()]=p),p.mintA.equals(e)&&(l[p.mintB.toBase58()]===void 0&&(l[p.mintB.toBase58()]={mintProgram:Pe.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),l[p.mintB.toBase58()].in.push(p)),p.mintB.equals(e)&&(l[p.mintA.toBase58()]===void 0&&(l[p.mintA.toBase58()]={mintProgram:Pe.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),l[p.mintA.toBase58()].in.push(p)),p.mintA.equals(t)&&(l[p.mintB.toBase58()]===void 0&&(l[p.mintB.toBase58()]={mintProgram:Pe.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),l[p.mintB.toBase58()].out.push(p)),p.mintB.equals(t)&&(l[p.mintA.toBase58()]===void 0&&(l[p.mintA.toBase58()]={mintProgram:Pe.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),l[p.mintA.toBase58()].out.push(p));for(let p of Object.keys(l)){if(l[p].in.length===1&&l[p].out.length===1&&l[p].in[0].id.equals(l[p].out[0].id)){delete l[p];continue}if(l[p].in.length===0||l[p].out.length===0){delete l[p];continue}let m=l[p];for(let f of m.in)for(let y of m.out)f.version===6&&a[f.id.toString()]===void 0?a[f.id.toString()]=f:f.version===7&&c[f.id.toString()]===void 0?c[f.id.toString()]=f:(f.version===4||f.version===5)&&r[f.id.toString()]===void 0&&(r[f.id.toString()]=f),y.version===6&&a[y.id.toString()]===void 0?a[y.id.toString()]=y:y.version===7&&c[y.id.toString()]===void 0?c[y.id.toString()]=y:(y.version===4||y.version===5)&&r[y.id.toString()]===void 0&&(r[y.id.toString()]=y)}return{directPath:u,addLiquidityPools:d,routePathDict:l,needSimulate:Object.values(r),needTickArray:Object.values(a),cpmmPoolList:Object.values(c)}}async fetchSwapRoutesData({routes:e,inputMint:t,outputMint:n}){let o=new Set([...e.needTickArray.map(y=>[y.mintA.toBase58(),y.mintB.toBase58()]).flat(),t.toString(),n.toString()]);console.log("fetching amm pools info, total: ",e.needSimulate.length);let i=await this.scope.liquidity.getRpcPoolInfos(e.needSimulate.map(y=>y.id)),r=_r(i),a={};Object.values(r).forEach(y=>{o.delete(y.mintA.address),a[y.mintA.address]={address:new ye.PublicKey(y.mintA.address),programId:Pe.TOKEN_PROGRAM_ID,mintAuthority:null,supply:BigInt(0),decimals:y.mintA.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0},o.delete(y.mintB.address),a[y.mintB.address]={address:new ye.PublicKey(y.mintB.address),programId:Pe.TOKEN_PROGRAM_ID,mintAuthority:null,supply:BigInt(0),decimals:y.mintB.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}}),console.log("fetching cpmm pools info, total: ",e.cpmmPoolList.length);let c=await this.scope.cpmm.getRpcPoolInfos(e.cpmmPoolList.map(y=>y.id.toBase58()),!0);Object.values(c).forEach(y=>{let[b,g]=[y.mintA.toBase58(),y.mintB.toBase58()];y.mintProgramA.equals(Pe.TOKEN_PROGRAM_ID)?(o.delete(b),a[b]={address:y.mintA,programId:y.mintProgramA,mintAuthority:null,supply:BigInt(0),decimals:y.mintDecimalA,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):o.add(b),y.mintProgramB.equals(Pe.TOKEN_PROGRAM_ID)?(o.delete(g),a[g]={address:y.mintB,programId:y.mintProgramB,mintAuthority:null,supply:BigInt(0),decimals:y.mintDecimalB,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):o.add(g)}),console.log("fetching mints info, total: ",o.size);let u=await yo({connection:this.scope.connection,mints:Array.from(o).map(y=>new ye.PublicKey(y))});a=N(N({},a),u);let l=this.scope.cpmm.toComputePoolInfos({pools:c,mintInfos:a});console.log("fetching clmm pools info, total:",e.needTickArray.length);let d=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:e.needTickArray.map(y=>y.id)}),{computeClmmPoolInfo:p,computePoolTickData:m}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:d,mintInfos:a}),f=Object.keys(e.routePathDict).reduce((y,b)=>E(N({},y),{[b]:E(N({},e.routePathDict[b]),{mintProgram:a[b].programId,mDecimals:a[b].decimals,in:e.routePathDict[b].in.map(g=>r[g.id.toBase58()]||p[g.id.toBase58()]||l[g.id.toBase58()]),out:e.routePathDict[b].out.map(g=>r[g.id.toBase58()]||p[g.id.toBase58()]||l[g.id.toBase58()])})}),{});return{mintInfos:a,ammPoolsRpcInfo:i,ammSimulateCache:r,clmmPoolsRpcInfo:d,computeClmmPoolInfo:p,computePoolTickData:m,computeCpmmData:l,routePathDict:f}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:o,simulateCache:i,tickCache:r,slippage:a,chainTime:c,epochInfo:u,feeConfig:l,blockTimestamp:d}){var P,k,I,A,h,B,S,K,x;let p=l===void 0?new Be.default(0):e.raw.mul(new Be.default(l.feeBps.toNumber())).div(new Be.default(1e4)),m=e.raw.sub(p),f=new Ce(e.token,m),y=l===void 0?void 0:{feeAmount:p,feeAccount:l.feeAccount},b=E(N({},t),{address:Vt(t.address).toString()}),g=[];for(let C of n)try{g.push(E(N({},this.computeAmountOut({itemPool:C,tickCache:r,simulateCache:i,chainTime:c,epochInfo:u,slippage:a,outputToken:b,amountIn:f,blockTimestamp:d})),{feeConfig:y}))}catch(L){this.logDebug("direct error",C.version,C.id.toString(),L.message)}this.logDebug("direct done");for(let[C,L]of Object.entries(o)){let O={chainId:101,address:C,programId:L.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:L.mDecimals,tags:[],extensions:{}},R=L.in.map(W=>{try{return{pool:W,data:this.computeAmountOut({itemPool:W,tickCache:r,simulateCache:i,chainTime:c,epochInfo:u,slippage:a,outputToken:O,amountIn:f,blockTimestamp:d})}}catch(D){this.logDebug("route in error",W.version,W.id.toString(),D.message);return}}).sort((W,D)=>{var H,oe,ue,te;let X=W===void 0?Ut:W.data.amountOut.amount.raw.sub((oe=(H=W.data.amountOut.fee)==null?void 0:H.raw)!=null?oe:Ut),$=D===void 0?Ut:D.data.amountOut.amount.raw.sub((te=(ue=D.data.amountOut.fee)==null?void 0:ue.raw)!=null?te:Ut);return X.lt($)?1:-1})[0];if(R===void 0)continue;let F=new Ce(gi(O),R.data.amountOut.amount.raw.sub((k=(P=R.data.amountOut.fee)==null?void 0:P.raw)!=null?k:Ut));for(let W of L.out)try{let D=this.computeAmountOut({itemPool:W,tickCache:r,simulateCache:i,chainTime:c,epochInfo:u,slippage:a,outputToken:b,amountIn:F,blockTimestamp:d});g.push(E(N({},D),{allTrade:!!(R.data.allTrade&&D.allTrade),amountIn:R.data.amountIn,amountOut:D.amountOut,minAmountOut:D.minAmountOut,currentPrice:void 0,executionPrice:new Ve.default(new ht({baseToken:R.data.amountIn.amount.token,denominator:R.data.amountIn.amount.raw,quoteToken:D.amountOut.amount.token,numerator:D.amountOut.amount.raw.sub((A=(I=D.amountOut.fee)==null?void 0:I.raw)!=null?A:Ut)}).toFixed()),priceImpact:new Ve.default(R.data.priceImpact.add(D.priceImpact).toFixed()),fee:[R.data.fee[0],D.fee[0]],routeType:"route",poolInfoList:[R.pool,W],remainingAccounts:[R.data.remainingAccounts[0],D.remainingAccounts[0]],minMiddleAmountFee:(h=D.amountOut.fee)!=null&&h.raw?new Ce(R.data.amountOut.amount.token,((S=(B=R.data.amountOut.fee)==null?void 0:B.raw)!=null?S:Ut).add((x=(K=D.amountOut.fee)==null?void 0:K.raw)!=null?x:Ut)):void 0,middleToken:R.data.amountOut.amount.token,poolReady:R.data.poolReady&&D.poolReady,poolType:[R.data.poolType,D.poolType],feeConfig:y,expirationTime:Zn(R.data.expirationTime,D.expirationTime)}))}catch(D){this.logDebug("route out error",W.version,W.id.toString(),D.message)}}return g.filter(C=>(C.allTrade||this.logDebug(`pool ${C.poolInfoList.map(L=>L.id.toString()).join(",")} filter out since not all trade`),C.allTrade)).sort((C,L)=>C.amountOut.amount.raw.sub(L.amountOut.amount.raw).gt(Ut)?-1:1)}getAllRouteComputeAmountIn({outputTokenAmount:e,directPath:t,routePathDict:n,simulateCache:o,tickCache:i,slippage:r,chainTime:a,epochInfo:c,blockTimestamp:u,feeConfig:l}){var m,f,y,b,g,P,k,I,A;let d=Bt({address:Vt(e.token.mint).toBase58(),decimals:e.token.decimals,programId:e.token.isToken2022?Pe.TOKEN_2022_PROGRAM_ID.toBase58():Pe.TOKEN_PROGRAM_ID.toBase58(),extensions:{}}),p=[];for(let h of t)try{let B=this.computeAmountIn({itemPool:h,tickCache:i,simulateCache:o,chainTime:a,epochInfo:c,slippage:r,outputToken:d,amountOut:e.raw,blockTimestamp:u}),S=l===void 0?new Be.default(0):B.amountIn.amount.raw.mul(new Be.default(l.feeBps.toNumber())).div(new Be.default(1e4));p.push(E(N({},B),{feeConfig:l===void 0?void 0:{feeAmount:S,feeAccount:l.feeAccount}}))}catch(B){this.logDebug("direct error",h.version,h.id.toString(),B.message)}this.logDebug("direct done");for(let[h,B]of Object.entries(n)){let S={chainId:101,address:h,programId:B.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:B.mDecimals,tags:[],extensions:{}},K=B.out.map(C=>{try{return{pool:C,data:this.computeAmountIn({itemPool:C,tickCache:i,simulateCache:o,chainTime:a,epochInfo:c,slippage:r,outputToken:d,amountOut:e.raw,blockTimestamp:u})}}catch(L){this.logDebug("route in error",C.version,C.id.toString(),L.message);return}}).sort((C,L)=>{var F,W,D,X;let O=C===void 0?Ut:C.data.amountIn.amount.raw.add((W=(F=C.data.amountIn.fee)==null?void 0:F.raw)!=null?W:Ut),R=L===void 0?Ut:L.data.amountIn.amount.raw.add((X=(D=L.data.amountIn.fee)==null?void 0:D.raw)!=null?X:Ut);return O.lt(R)?-1:1})[0];if(K===void 0)continue;let x=new Ce(gi(S),K.data.amountIn.amount.raw.add((f=(m=K.data.amountIn.fee)==null?void 0:m.raw)!=null?f:Ut));for(let C of B.in)try{let L=this.computeAmountIn({itemPool:C,tickCache:i,simulateCache:o,chainTime:a,epochInfo:c,slippage:r,outputToken:S,amountOut:x.raw,blockTimestamp:u}),O=l===void 0?new Be.default(0):L.amountIn.amount.raw.mul(new Be.default(l.feeBps.toNumber())).div(new Be.default(1e4));p.push(E(N({},L),{allTrade:!!(L.allTrade&&K.data.allTrade),amountIn:L.amountIn,amountOut:K.data.amountOut,maxAmountIn:L.maxAmountIn,currentPrice:void 0,executionPrice:new Ve.default(new ht({baseToken:K.data.amountIn.amount.token,denominator:K.data.amountIn.amount.raw,quoteToken:L.amountOut.amount.token,numerator:L.amountOut.amount.raw.sub((b=(y=L.amountOut.fee)==null?void 0:y.raw)!=null?b:Ut)}).toFixed()),priceImpact:new Ve.default(K.data.priceImpact.add(L.priceImpact).toFixed()),fee:[L.fee[0],K.data.fee[0]],routeType:"route",poolInfoList:[K.pool,C],remainingAccounts:[K.data.remainingAccounts[0],L.remainingAccounts[0]],minMiddleAmountFee:(g=L.amountOut.fee)!=null&&g.raw?new Ce(K.data.amountOut.amount.token,((k=(P=K.data.amountOut.fee)==null?void 0:P.raw)!=null?k:Ut).add((A=(I=L.amountOut.fee)==null?void 0:I.raw)!=null?A:Ut)):void 0,middleToken:K.data.amountOut.amount.token,poolReady:K.data.poolReady&&L.poolReady,poolType:[K.data.poolType,L.poolType],feeConfig:l===void 0?void 0:{feeAmount:O,feeAccount:l.feeAccount},expirationTime:Zn(K.data.expirationTime,L.expirationTime)}))}catch(L){this.logDebug("route out error",C.version,C.id.toString(),L.message)}}return p.filter(h=>(h.allTrade||this.logDebug(`pool ${h.poolInfoList.map(B=>B.id.toString()).join(",")} filter out since not all trade`),h.allTrade)).sort((h,B)=>B.amountIn.amount.raw.sub(h.amountIn.amount.raw).gt(Ut)?-1:1)}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:o,epochInfo:i,slippage:r,outputToken:a,amountIn:c,blockTimestamp:u}){if(e.version===6){let{allTrade:l,realAmountIn:d,amountOut:p,minAmountOut:m,expirationTime:f,currentPrice:y,executionPrice:b,priceImpact:g,fee:P,remainingAccounts:k,executionPriceX64:I}=At.computeAmountOutFormat({poolInfo:e,tickarrayBitmapExtension:e.exBitmapInfo,tickArrayCache:t[e.id.toString()],amountIn:c.raw,tokenOut:a,slippage:r,epochInfo:i,catchLiquidityInsufficient:!0,blockTimestamp:u});return{allTrade:l,amountIn:d,amountOut:p,minAmountOut:m,currentPrice:new Ve.default(y.toFixed()),executionPrice:new Ve.default(b.toFixed()),priceImpact:new Ve.default(g.toFixed()),fee:[P],remainingAccounts:[k],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<o,poolType:"CLMM",slippage:r,clmmExPriceX64:[I],expirationTime:Zn(d.expirationTime,f)}}else if(e.version===7){let{allTrade:l,executionPrice:d,amountOut:p,minAmountOut:m,priceImpact:f,fee:y}=this.scope.cpmm.computeSwapAmount({pool:e,outputMint:a.address,amountIn:c.raw,slippage:r});return{allTrade:l,amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:gt(E(N({},a),{amount:p})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:gt(E(N({},a),{amount:m})),fee:void 0,expirationTime:void 0},currentPrice:e.poolPrice,executionPrice:d,priceImpact:f,fee:[new Ce(c.token,y)],remainingAccounts:[],routeType:"amm",poolInfoList:[e],poolReady:e.openTime.toNumber()<o,poolType:"CPMM",slippage:r,clmmExPriceX64:[void 0],expirationTime:void 0}}else{if(![1,6,7].includes(n[e.id.toString()].status))throw Error("swap error");let{amountOut:l,minAmountOut:d,currentPrice:p,executionPrice:m,priceImpact:f,fee:y}=this.scope.liquidity.computeAmountOut({poolInfo:n[e.id.toString()],amountIn:c.raw,mintIn:c.token.mint,mintOut:a.address,slippage:r});return{amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:gt(E(N({},a),{amount:l})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:gt(E(N({},a),{amount:d})),fee:void 0,expirationTime:void 0},currentPrice:p,executionPrice:m,priceImpact:f,fee:[new Ce(c.token,y)],routeType:"amm",poolInfoList:[e],remainingAccounts:[],poolReady:Number(n[e.id].openTime)<o,poolType:e.version===5?"STABLE":void 0,expirationTime:void 0,allTrade:!0,slippage:r,clmmExPriceX64:[void 0]}}}computeAmountIn({itemPool:e,tickCache:t,simulateCache:n,chainTime:o,epochInfo:i,slippage:r,amountOut:a,outputToken:c,blockTimestamp:u}){let l=c.address===e.mintB.address?e.mintA:e.mintB;if(e.version===6){let{allTrade:d,realAmountOut:p,amountIn:m,maxAmountIn:f,expirationTime:y,currentPrice:b,executionPrice:g,priceImpact:P,fee:k,remainingAccounts:I}=At.computeAmountIn({poolInfo:e,tickarrayBitmapExtension:e.exBitmapInfo,tickArrayCache:t[e.id.toString()],amountOut:a,baseMint:new ye.PublicKey(l.address),slippage:r,epochInfo:i,blockTimestamp:u});return{allTrade:d,amountOut:{amount:gt(E(N({},c),{amount:p.amount})),fee:p.fee?gt(E(N({},c),{amount:p.fee})):void 0,expirationTime:void 0},amountIn:{amount:gt(E(N({},l),{amount:m.amount})),fee:m.fee?gt(E(N({},l),{amount:m.fee})):void 0,expirationTime:m.expirationTime},maxAmountIn:{amount:gt(E(N({},l),{amount:f.amount})),fee:f.fee?gt(E(N({},l),{amount:f.fee})):void 0,expirationTime:f.expirationTime},currentPrice:new Ve.default(b.toFixed()),executionPrice:new Ve.default(g.toFixed()),priceImpact:new Ve.default(P.toFixed()),fee:[gt(E(N({},l),{amount:k}))],remainingAccounts:[I],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<o,poolType:"CLMM",slippage:r,clmmExPriceX64:[Bo(g)],expirationTime:Zn(p.expirationTime,y)}}else if(e.version===7){let{allTrade:d,executionPrice:p,amountIn:m,amountOut:f,priceImpact:y,fee:b}=this.scope.cpmm.computeSwapAmount({pool:e,outputMint:c.address,amountIn:a,swapBaseIn:!1,slippage:r});return{allTrade:d,amountOut:{amount:gt(E(N({},c),{amount:f})),fee:void 0,expirationTime:void 0},amountIn:{amount:gt(E(N({},l),{amount:m})),fee:void 0,expirationTime:void 0},maxAmountIn:{amount:gt(E(N({},l),{amount:m.mul(new Be.default((1+r)*1e4)).div(new Be.default(1e4))})),fee:void 0,expirationTime:void 0},currentPrice:e.poolPrice,executionPrice:p,priceImpact:y,fee:[gt(E(N({},l),{amount:b}))],remainingAccounts:[],routeType:"amm",poolInfoList:[e],poolReady:e.openTime.toNumber()<o,poolType:"CPMM",slippage:r,clmmExPriceX64:[void 0],expirationTime:void 0}}else{if(![1,6,7].includes(n[e.id.toString()].status))throw Error("swap error");let{amountIn:d,maxAmountIn:p,currentPrice:m,executionPrice:f,priceImpact:y}=this.scope.liquidity.computeAmountIn({poolInfo:n[e.id.toString()],amountOut:a,mintIn:l.address,mintOut:c.address,slippage:r});return{amountOut:{amount:gt(E(N({},c),{amount:a})),fee:void 0,expirationTime:void 0},amountIn:{amount:gt(E(N({},l),{amount:d})),fee:void 0,expirationTime:void 0},maxAmountIn:{amount:gt(E(N({},l),{amount:p})),fee:void 0,expirationTime:void 0},currentPrice:m,executionPrice:f,priceImpact:y,fee:[gt(E(N({},l),{amount:Z}))],routeType:"amm",poolInfoList:[e],remainingAccounts:[],poolReady:Number(n[e.id].openTime)<o,poolType:e.version===5?"STABLE":void 0,expirationTime:void 0,allTrade:!0,slippage:r,clmmExPriceX64:[void 0]}}}async computePoolToPoolKeys({pools:e,clmmRpcData:t={},ammRpcData:n={}}){let o=new Set(e.filter(u=>u.version===6&&!t[u.id.toString()]).map(u=>u.id.toString()));if(o.size>0){let u=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(o)});Object.keys(u).forEach(l=>{t[l]=u[l]})}let i=new Set(e.filter(u=>u.version===4&&!n[u.id.toString()]).map(u=>u.id.toString()));if(i.size>0){let u=await this.scope.liquidity.getRpcPoolInfos(Array.from(i));Object.keys(u).forEach(l=>{n[l]=u[l]})}let r=new Set(e.filter(u=>u.version===4).map(u=>u.marketId)),a={};r.size>0&&(await Ue(this.scope.connection,Array.from(r).map(l=>({pubkey:new ye.PublicKey(l)})))).forEach(l=>{if(!l.accountInfo)return;let d=Hs.decode(l.accountInfo.data);a[l.pubkey.toBase58()]={marketId:l.pubkey.toString(),marketProgramId:l.accountInfo.owner.toString(),marketAuthority:na.getAssociatedAuthority({programId:l.accountInfo.owner,marketId:l.pubkey}).publicKey.toString(),marketBaseVault:d.baseVault.toString(),marketQuoteVault:d.quoteVault.toString(),marketBids:d.bids.toString(),marketAsks:d.asks.toString(),marketEventQueue:d.eventQueue.toString()}});let c=[];return e.forEach(u=>{if(u.version===6){let l=t[u.id.toString()],d={programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.startTime),vault:{A:l.vaultA.toBase58(),B:l.vaultB.toBase58()},config:E(N({},u.ammConfig),{id:u.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),rewardInfos:[],observationId:u.observationId.toBase58(),exBitmapAccount:u.exBitmapAccount.toBase58()};c.push(d)}else if(u.version===4){let l=n[u.id.toString()],d=N({programId:u.programId,id:u.id,mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),vault:{A:l.baseVault.toBase58(),B:l.quoteVault.toBase58()},authority:Cs({programId:new ye.PublicKey(u.programId)}).publicKey.toString(),openOrders:l.openOrders.toBase58(),targetOrders:l.targetOrders.toBase58(),mintLp:u.lpMint},a[u.marketId]||{marketProgramId:l.marketProgramId.toBase58(),marketId:l.marketId.toBase58(),marketAuthority:ye.PublicKey.default.toBase58(),marketBaseVault:ye.PublicKey.default.toBase58(),marketQuoteVault:ye.PublicKey.default.toBase58(),marketBids:ye.PublicKey.default.toBase58(),marketAsks:ye.PublicKey.default.toBase58(),marketEventQueue:ye.PublicKey.default.toBase58()});c.push(d)}else u.version===7&&c.push({observationId:u.observationId.toBase58(),programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),authority:Ko(u.programId).publicKey.toBase58(),vault:{A:u.vaultA.toBase58(),B:u.vaultB.toBase58()},mintLp:Bt({address:u.mintLp.toBase58(),programId:Pe.TOKEN_PROGRAM_ID.toBase58(),decimals:u.lpDecimals}),config:E(N({id:u.configId.toBase58()},u.configInfo),{protocolFeeRate:u.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:u.configInfo.tradeFeeRate.toNumber(),fundFeeRate:u.configInfo.fundFeeRate.toNumber(),createPoolFee:u.configInfo.createPoolFee.toString()})})}),c}};var No=require("@solana/web3.js"),rp=require("@solana/spl-token"),wl=re(require("bn.js"));var $t=class extends st{static getPdaPoolId(e,t){return ae([$t.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,o){return ae([$t.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new wl.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(l=>$t.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<$t.VERSION_PROJECT.length;l++)a.push(...r.map(d=>$t.getPdaOwnerId(t,d,o,l).publicKey));let c=await Rt(e,[...r,...a]),u=[];for(let l=0;l<c.length;l++){let d=Math.floor(l/n.length),p=l%n.length,m=r[p],f=a[l],y=c[p],b=c[n.length+l];if(!(y&&b)||y.data.length!==$t.POOL_LAYOUT.span||b.data.length!==$t.OWNER_LAYOUT.span)continue;let g=$t.POOL_LAYOUT.decode(y.data),P=$t.OWNER_LAYOUT.decode(b.data),k=g.openTime.toNumber(),I=g.endTime.toNumber(),A=P.tokenInfo.map(S=>S.debtAmount.gt(new wl.default(0))).filter(S=>!S).length!==3,h=i>k&&i<I&&g.status===1,B=A&&h;u.push({programId:t,poolId:m,ammId:g.ammId,ownerAccountId:f,snapshotLpAmount:P.lpAmount,project:$t.VERSION_PROJECT[d],openTime:k,endTime:I,canClaim:B,canClaimErrorType:A?h?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((S,K)=>({mintAddress:S.mintAddress,mintVault:S.mintVault,mintDecimals:S.mintDecimals,perLpLoss:S.perLpLoss,debtAmount:P.tokenInfo[K].debtAmount.add(P.tokenInfo[K].claimedAmount)}))})}return u}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 u of e.tokenInfo){let{account:l,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({mint:u.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:u.mintAddress.equals(We.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!u.mintAddress.equals(We.WSOL.mint),associatedOnly:u.mintAddress.equals(We.WSOL.mint)?!1:t.associatedOnly});d&&o.addInstruction(d),r.push(l)}o.addInstruction({instructions:[$t.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:i,ownerPda:e.ownerAccountId,claimAddress:r}})]});let{transaction:a,signers:c}=o.build();return[{transaction:a,signer:c}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:n}){let o=this.createTxBuilder(n),i=t.wallet||this.scope.ownerPubKey,r={};for(let l of e){let d=[];for(let p of l.tokenInfo){let{account:m,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({mint:p.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:p.mintAddress.equals(We.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!p.mintAddress.equals(We.WSOL.mint),associatedOnly:p.mintAddress.equals(We.WSOL.mint)?!1:t.associatedOnly});f&&o.addInstruction(f),m&&(r[p.mintAddress.toString()]=m,d.push(m))}o.addInstruction({instructions:[$t.makeClaimInstruction({programId:l.programId,poolInfo:l,ownerInfo:{wallet:i,ownerPda:l.ownerAccountId,claimAddress:d}})]})}let{transaction:a,signers:c}=o.build(),u=o.allInstructions;return ar(u,[i,...c.map(l=>l.publicKey)])?[{transaction:a,signer:c}]:[{transaction:new No.Transaction().add(...u.slice(0,o.AllTxData.instructions.length-1)),signer:c},{transaction:new No.Transaction().add(...u.slice(o.AllTxData.instructions.length-1)),signer:[]},{transaction:new No.Transaction().add(...o.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let o=v([]),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(c=>({pubkey:c,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:c})=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:rp.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 No.TransactionInstruction({keys:i,programId:e,data:a})}},On=$t;On.CLAIMED_NUM=3,On.POOL_LAYOUT=v([xe(8),V("bump"),V("status"),w("openTime"),w("endTime"),M("ammId"),J(v([V("mintDecimals"),M("mintAddress"),M("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),$t.CLAIMED_NUM,"tokenInfo"),J(w(),10,"padding")]),On.OWNER_LAYOUT=v([xe(8),V("bump"),V("version"),M("poolId"),M("owner"),w("lpAmount"),J(v([M("mintAddress"),w("debtAmount"),w("claimedAmount")]),$t.CLAIMED_NUM,"tokenInfo"),J(w(),4,"padding")]),On.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new No.PublicKey(e)),On.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},On.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];var kl=require("@solana/web3.js"),fn=require("@solana/spl-token");var ia=class extends st{constructor(t){super(t);this._tokenList=[];this._tokenMap=new Map;this._blackTokenMap=new Set;this._mintGroup={official:new Set,jup:new Set,extra:new Set};this._whiteMap=new Set;this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:o="strict"}=t||{},{mintList:i,blacklist:r,whiteList:a}=await this.scope.fetchV3TokenList(n),c=await this.scope.fetchJupTokenList(n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Set(r),this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._whiteMap=new Set(a),this._tokenMap.set(Mn.address,Mn),this._mintGroup.official.add(Mn.address),i.forEach(u=>{var l;this._blackTokenMap.has(u.address)||(this._tokenMap.set(u.address,E(N({},u),{type:"raydium",priority:2,programId:(l=u.programId)!=null?l:u.tags.includes("token-2022")?fn.TOKEN_2022_PROGRAM_ID.toBase58():fn.TOKEN_PROGRAM_ID.toBase58()})),this._mintGroup.official.add(u.address))}),c.forEach(u=>{var l;this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,E(N({},u),{type:"jupiter",priority:1,programId:(l=u.programId)!=null?l:u.tags.includes("token-2022")?fn.TOKEN_2022_PROGRAM_ID.toBase58():fn.TOKEN_PROGRAM_ID.toBase58(),tags:u.freezeAuthority?[...u.tags||[],"hasFreeze"]:u.tags})),this._mintGroup.jup.add(u.address))}),this._extraTokenList.forEach(u=>{this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,E(N({},u),{type:"extra",priority:1,programId:u.programId||u.tags.includes("token-2022")?fn.TOKEN_2022_PROGRAM_ID.toBase58():fn.TOKEN_PROGRAM_ID.toBase58()})),this._mintGroup.extra.add(u.address))}),this._tokenList=Array.from(this._tokenMap).map(u=>u[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}get whiteListMap(){return this._whiteMap}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),o=this._tokenMap.get(n);if(o)return o;if(n.toLocaleUpperCase()==="SOL")return Mn;let i=(await this.scope.api.getTokenInfo([n]))[0];if(i)return this._mintGroup.extra.add(n),this._tokenMap.set(n,E(N({},i),{priority:2})),i;let r=await this.scope.connection.getAccountInfo(new kl.PublicKey(n));if(!r)throw new Error(`mint address not found: ${n}`);let a=fn.MintLayout.decode(r.data),c=n.toString().substring(0,6),u=(0,fn.getTransferFeeConfig)((0,fn.unpackMint)(new kl.PublicKey(t),r,r.owner)),l={chainId:101,address:n,programId:r.owner.toBase58(),logoURI:"",symbol:c,name:c,decimals:a.decimals,tags:[],extensions:u?{feeConfig:Vn(u)}:{},priority:0,type:"unknown"};return this._mintGroup.extra.add(n),this._tokenMap.set(n,l),l}};var ra=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:o,api:i,defaultChainTime:r,defaultChainTimeOffset:a,apiCacheTime:c,blockhashCommitment:u="confirmed",loopMultiTxStatus:l}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=o?new wn(o):void 0,this._signAllTransactions=e.signAllTransactions,this.blockhashCommitment=u,this.loopMultiTxStatus=l,this.api=i,this._apiCacheTime=c||5*60*1e3,this.logger=Se("Raydium"),this.farm=new Cr({scope:this,moduleName:"Raydium_Farm"}),this.account=new mr({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new Dr({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new ia({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new oa({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new Ii({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new zr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new On({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new Di({scope:this,moduleName:"Raydium_marketV2"}),this.launchpad=new ta({scope:this,moduleName:"Raydium_lauchpad"}),this.availability={};let d=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:d,value:{chainTime:r||Date.now()-a,offset:a}})}static async load(e){var l;let t=(0,ap.merge)({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:o,logCount:i,logRequests:r,urlConfigs:a}=t,c=new aa({cluster:n,timeout:o,urlConfigs:a,logCount:i,logRequests:r}),u=new ra(E(N({},t),{api:c}));return await u.fetchAvailabilityStatus((l=e.disableFeatureCheck)!=null?l:!0),e.disableLoadToken||await u.token.load({type:e.jupTokenType}),u}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(wa);return this._owner.publicKey}setOwner(e){return this._owner=e?new wn(e):void 0,this.account.resetTokenAccounts(),this}get connection(){if(!this._connection)throw new Error(em);return this._connection}setConnection(e){return this._connection=e,this}get signAllTransactions(){return this._signAllTransactions}setSignAllTransactions(e){return this._signAllTransactions=e,this}checkOwner(){if(!this.owner)throw console.error(wa),new Error(wa)}isCacheInvalidate(e){return new Date().getTime()-e>this._apiCacheTime}async fetchChainTime(){try{let e=await this.api.getChainTimeOffset();this._chainTime={fetched:Date.now(),value:{chainTime:Date.now()+e.offset*1e3,offset:e.offset*1e3}}}catch{this._chainTime=void 0}}async fetchV3TokenList(e){if(this.apiData.tokenList&&!this.isCacheInvalidate(this.apiData.tokenList.fetched)&&!e)return this.apiData.tokenList.data;try{let t=await this.api.getTokenList(),n={fetched:Date.now(),data:t};return this.apiData.tokenList=n,n.data}catch(t){return console.error(t),{mintList:[],blacklist:[],whiteList:[]}}}async fetchJupTokenList(e){if(this.cluster==="devnet")return[];let t=this.apiData.jupTokenList;if(t&&!this.isCacheInvalidate(t.fetched)&&!e)return t.data;try{let n=await this.api.getJupTokenList();return this.apiData.jupTokenList={fetched:Date.now(),data:n.map(o=>E(N({},o),{mintAuthority:o.mint_authority||void 0,freezeAuthority:o.freeze_authority||void 0}))},this.apiData.jupTokenList.data}catch(n){return console.error(n),[]}}get chainTimeData(){var e;return(e=this._chainTime)==null?void 0:e.value}async chainTimeOffset(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.offset:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.offset)||0)}async currentBlockChainTime(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.chainTime:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.chainTime)||Date.now())}async fetchEpochInfo(){return this._epochInfo&&Date.now()-this._epochInfo.fetched<=1e3*30?this._epochInfo.value:(this._epochInfo={fetched:Date.now(),value:await this.connection.getEpochInfo()},this._epochInfo.value)}async fetchAvailabilityStatus(e){if(e)return{};try{let t=await this.api.fetchAvailabilityStatus(),n=t.all===!1;return this.availability={all:t.all,swap:n?!1:t.swap,createConcentratedPosition:n?!1:t.createConcentratedPosition,addConcentratedPosition:n?!1:t.addConcentratedPosition,addStandardPosition:n?!1:t.addStandardPosition,removeConcentratedPosition:n?!1:t.removeConcentratedPosition,removeStandardPosition:n?!1:t.removeStandardPosition,addFarm:n?!1:t.addFarm,removeFarm:n?!1:t.removeFarm},t}catch{return{}}}};var Bb=s=>s;function wt(s){if(s instanceof at)return new Ae(s.numerator,s.denominator);if(s instanceof ht)return s.adjusted;if(s instanceof Ce)try{return wt(s.toExact())}catch{return new Ae(Z)}if(s instanceof Ae)return s;let e=String(s),t=Mo(e);return new Ae(t.numerator,t.denominator)}function xb(s){var n;if(s instanceof at)return{fr:new Ae(s.numerator,s.denominator)};if(s instanceof ht)return{fr:s.adjusted};if(s instanceof Ce)return{fr:wt(s.toExact()),decimals:s.token.decimals};if(s instanceof Ae)return{fr:s};let e=String(s),t=Mo(e);return{fr:new Ae(t.numerator,t.denominator),decimals:(n=t.dec)==null?void 0:n.length}}function Sb(s,e){if(s==null||e==null)return!1;let t=wt(s),n=wt(e);return t.sub(n).numerator,t.sub(n).numerator.lt(Z)}function sp(s,e){if(s==null||e==null)return!1;let t=wt(s),n=wt(e);return t.sub(n).numerator.gt(Z)}function Kb(s,e){if(s==null||e==null)return!1;let t=wt(s),n=wt(e);return t.sub(n).numerator.lte(Z)}function Cb(s,e){if(s==null||e==null)return!1;let t=wt(s),n=wt(e);return t.sub(n).numerator.gte(Z)}function up(s,e){if(s==null||e==null)return!1;let t=wt(s),n=wt(e);return t.sub(n).numerator.eq(Z)}function Rb(s,e){if(s==null||e==null)return;let t=wt(s),n=wt(e);try{return t.div(n)}catch{return t}}function Lb(s,e){if(s==null||e==null)return;let t=wt(s),n=wt(e);return t.sub(n)}function Ob(s){return s==null?!1:!up(s,0)}function Nb(s,e){return sp(e,s)?e:s}function js(s,e){if(s==null||e==null)return;let t=wt(s),n=wt(e);return t.mul(n)}function Mb(s,e){if(s==null||e==null)return;let t=wt(s),n=wt(e);return t.add(n)}var Fb=new kt.default(2),vb=new kt.default(3),_b=new kt.default(5),go=new kt.default(10),Vb=new kt.default(100),Eb=new kt.default(1e3),Db=new kt.default(1e4);function Aa(s){return go.pow(me(s))}function Mo(s){var a;if(s===void 0)return{denominator:"1",numerator:"0"};if(s instanceof kt.default)return{numerator:s.toString(),denominator:"1"};if(s instanceof Ae)return{denominator:s.denominator.toString(),numerator:s.numerator.toString()};let e=String(s),[,t="",n="",o=""]=(a=e.replace(",","").match(/(-?)(\d*)\.?(\d*)/))!=null?a:[],i="1"+"0".repeat(o.length),r=t+(n==="0"?"":n)+o||"0";return{denominator:i,numerator:r,sign:t,int:n,dec:o}}function Er(s,e){let t=s.divmod(e);return t.mod.isZero()?t.div:s.isNeg()===e.isNeg()?t.div.iaddn(1):t.div}function lp(s){var n;let[,e="",t=""]=(n=s.toFixed(2).match(/(-?)(\d*)\.?(\d*)/))!=null?n:[];return`${e}${t}`}function mp(s,e=0){return s instanceof kt.default?s:new kt.default(lp(hl(s).mul(go.pow(new kt.default(String(e))))))}function hl(s){if(s instanceof at)return new Ae(s.numerator,s.denominator);if(s instanceof ht)return s.adjusted;if(s instanceof Ce)try{return hl(s.toExact())}catch{return new Ae(Z)}if(s instanceof Ae)return s;let e=String(s),t=Mo(e);return new Ae(t.numerator,t.denominator)}function qi(s,e,t){return s.mul(e).add(t).sub(new kt.default(1)).div(t)}function Ur(s,e,t){return s.mul(e).div(t)}function Wb(s,e){let{numerator:t,denominator:n}=Mo(s);return new at(new kt.default(t),new kt.default(n).mul(e!=null&&e.alreadyDecimaled?new kt.default(100):new kt.default(1)))}function qb(s){let{token:e,numberPrice:t,decimalDone:n}=s,o=new We({mint:"",decimals:6,symbol:"usd",name:"usd",skipMint:!0}),{numerator:i,denominator:r}=Mo(t),a=n?new kt.default(i).mul(go.pow(new kt.default(e.decimals))):i,c=new kt.default(r).mul(go.pow(new kt.default(o.decimals)));return new ht({baseToken:o,denominator:c.toString(),quoteToken:new We(E(N({},e),{skipMint:!0,mint:""})),numerator:a.toString()})}function Tl(s){let e=new ci({decimals:6,symbol:"usd",name:"usd"}),t=mp(js(s,10**e.decimals));return new bo(e,t)}function Ub(s,e){return Tl(!e||!s?0:js(s,e))}function Gb(s){if(s==null)return;let{numerator:e,denominator:t}=Mo(s.toString());return new Ae(e,t)}function zb(s){return s instanceof cp.default}function ma(s,e=1,t=[]){let n=[...s];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}function Xb(s,...e){return s.filter(t=>e.every(n=>n.includes(t)))}function Yb(s,...e){return s.filter(t=>e.every(n=>!n.includes(t)))}function Hb(s){return[...new Set(s)]}var it={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"},Il=E(N({},it),{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 Bl="ray_tab_hash",$s="ray_req_hash",dp=()=>{if(typeof window===void 0)return"";let s=sessionStorage.getItem(Bl);return s||(s=`ray-${Date.now()}`,sessionStorage.setItem(Bl,s)),s},sa=async n=>{var o=n,{logCount:s=1e3,removeLastLog:e}=o,t=tt(o,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(r=>r());let i=JSON.parse(localStorage.getItem($s)||"[]").slice(0,s-1);e&&i.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),i.unshift(E(N({},t),{time:Date.now(),session:dp()}));try{localStorage.setItem($s,JSON.stringify(i))}catch{if(e){let r=!1,a=JSON.stringify(t.data).substring(0,100);for(i[0].data=a+(a.length>100?"...":"");!r;){i.pop();let c=JSON.stringify(t.data).substring(0,100);i[0].data=c+(c.length>100?"...":"");try{localStorage.setItem($s,JSON.stringify(i)),r=!0}catch{r=!1}}return new Promise(c=>c())}return sa(E(N({},t),{logCount:s,removeLastLog:!0}))}};var Zi=Se("Raydium_Api"),xl=new Map,Sl=new Map;async function Qb(s,e,t=1e3){let n;for(;n==null;)try{Zi.debug(`Request ${s} through endlessRetry`),n=await e()}catch(o){Zi.error(`Request ${s} failed, retry after ${t} ms`,o),await wc(t)}return n}var aa=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:o,urlConfigs:i}){this.cluster=e,this.urlConfigs=i||{},this.logCount=o||1e3,this.api=Kl.default.create({baseURL:this.urlConfigs.BASE_HOST||(this.cluster==="devnet"?Il.BASE_HOST:it.BASE_HOST),timeout:t}),this.api.interceptors.request.use(r=>{let{method:a,baseURL:c,url:u}=r;return Zi.debug(`${a==null?void 0:a.toUpperCase()} ${c}${u}`),r},r=>(Zi.error("Request failed"),Promise.reject(r))),this.api.interceptors.response.use(r=>{let{config:a,data:c,status:u}=r,{method:l,baseURL:d,url:p}=a;return n&&sa({status:u,url:`${d}${p}`,params:a.params,data:c,logCount:this.logCount}),Zi.debug(`${l==null?void 0:l.toUpperCase()} ${d}${p} ${u}`),c},r=>{let{config:a,response:c={}}=r,{status:u}=c,{method:l,baseURL:d,url:p}=a;return n&&sa({status:u,url:`${d}${p}`,params:a.params,data:r.message,logCount:this.logCount}),Zi.error(`${l.toUpperCase()} ${d}${p} ${u||r.message}`),Promise.reject(r)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||it.CLMM_CONFIG)).data}async getClmmDynamicConfigs(){return(await this.api.get(this.urlConfigs.CLMM_DYNAMIC_CONFIG||it.CLMM_DYNAMIC_CONFIG)).data}async getCpmmConfigs(){return(await this.api.get(this.urlConfigs.CPMM_CONFIG||it.CPMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_POSITION_LINE||it.POOL_POSITION_LINE}?id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await Kl.default.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(o=>o.numSlots);return n.reduce((o,i)=>o+i,0)/n.length/60}async getChainTimeOffset(){return(await this.api.get(this.urlConfigs.CHAIN_TIME||it.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||it.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||it.TOKEN_LIST)).data}async getJupTokenList(){return(await this.api.get("",{baseURL:this.urlConfigs.JUP_TOKEN_LIST||it.JUP_TOKEN_LIST})).map(t=>E(N({},t),{chainId:101,programId:t.tokenProgram,address:t.id,logoURI:t.icon,extensions:{},freeze_authority:null,permanent_delegate:null,mint_authority:t.mintAuthority||null,minted_at:Date.now().toString()}))}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||it.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:o="desc",showFarms:i=!1,nextPageId:r,pageSize:a=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||it.POOL_LIST)+`?size=${a}&hasReward=${i}${t&&t!=="all"?`&poolType=${t}`:""}${n?`&sortField=${n}`:""}${o?`&sortType=${o}`:""}${r?`&nextPageId=${r}`:""}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||it.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],o=t.filter(r=>xl.has(r)?(n.push(xl.get(r)),!1):!0),i=[];return o.length&&(i=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||it.POOL_KEY_BY_ID)+`?ids=${o.join(",")}`)).data.filter(Boolean),i.forEach(a=>{xl.set(a.id,a)})),n.concat(i)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:o="all",sort:i,order:r="desc",nextPageId:a}=e,[c,u]=[t&&Vt(t).toBase58(),n&&n!=="undefined"?Vt(n).toBase58():""],[l,d]=u&&c>u?[u,c]:[c,u];if(!c&&!u)throw new Error("not search mints provided");return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||it.POOL_SEARCH_MINT)+`?size=100&mint1=${l}${d?`&mint2=${d}`:""}${o&&o!=="all"?`&poolType=${o}`:""}${i?`&sortField=${i}`:""}${r?`&sortType=${r}`:""}${a?`&nextPageId=${a}`:""}`)).data}async fetchPoolByLpMints(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_LP||it.POOL_SEARCH_LP)+`?lps=${t}`)).data}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||it.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||it.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||it.CHECK_AVAILABILITY)).data}async fetchLaunchConfigs(){var t;if((t=Sl.get(this.cluster))!=null&&t.length)return Sl.get(this.cluster);let e=await this.api.get(this.cluster==="devnet"?"https://launch-mint-v1-devnet.raydium.io/main/configs":"https://launch-mint-v1.raydium.io/main/configs");return Sl.set(this.cluster,e.data.data),e.data.data}async fetchFarmPositions(e=""){return(await this.api.get(`${this.urlConfigs.OWNER_BASE_HOST||it.OWNER_BASE_HOST}`+(this.urlConfigs.OWNER_STAKE_FARMS||it.OWNER_STAKE_FARMS).replace("{owner}",e))).data}async fetchCpmmLockInfo(e){return await this.api.get(`${this.urlConfigs.CPMM_LOCK||it.CPMM_LOCK}?id=${e.toString()}`)}};0&&(module.exports={ACCOUNT_TYPE_SIZE,ALL_PROGRAM_ID,AMM_CONFIG_SEED,AMM_STABLE,AMM_V4,ANAMint,API_URLS,AUTH_SEED,AccountType,Api,BIT_PRECISION,BNDivCeil,BNLayout,BN_100,BN_1000,BN_10000,BN_FIVE,BN_NEGATIVE_ONE,BN_ONE,BN_TEN,BN_THREE,BN_TWO,BN_ZERO,BitStructure,Blob,BondingCurveParam,CLMM_LOCK_AUTH_ID,CLMM_LOCK_PROGRAM_ID,CLMM_PROGRAM_ID,CLOCK_PROGRAM_ID,CONFIG_SEED,CREATE_CPMM_POOL_AUTH,CREATE_CPMM_POOL_FEE_ACC,CREATE_CPMM_POOL_PROGRAM,CREATOR_FEE_VAULT_AUTH_SEED,Clmm,ClmmConfigLayout,ClmmInstrument,CollectFeeOn,ConstantProductCurve,CpmmConfigInfoLayout,CpmmCreatorFeeOn,CpmmFee,CpmmPermission,CpmmPoolInfoLayout,Currency,CurrencyAmount,Curve,CurveBase,CurveCalculator,DEVNET_PROGRAM_ID,DEV_API_URLS,DEV_FARM_LOCK_MINT,DEV_FARM_LOCK_VAULT,DEV_LAUNCHPAD_AUTH,DEV_LAUNCHPAD_PROGRAM,DEV_LOOKUP_TABLE_CACHE,DYNAMIC_CONFIG_INDEX,DYNAMIC_FEE_CONFIG_SEED,DYNAMIC_FEE_CONTROL_DENOMINATOR,DataElement,DynamicFeeConfigLayout,DynamicFeeInfo,DynamicFeeInfoLayout,ETHMint,EXTENSION_TICKARRAY_BITMAP_SIZE,FARM_LOCK_MINT,FARM_LOCK_VAULT,FARM_PROGRAM_ID_V3,FARM_PROGRAM_ID_V4,FARM_PROGRAM_ID_V5,FARM_PROGRAM_ID_V6,FARM_PROGRAM_TO_VERSION,FARM_VERSION_TO_LEDGER_LAYOUT,FARM_VERSION_TO_STATE_LAYOUT,FEE_DESTINATION_ID,FEE_RATE_DENOMINATOR,FEE_RATE_DENOMINATOR_VALUE,FeeOn,FixedPriceCurve,Fraction,INSTRUCTION_PROGRAM_ID,InstructionType,JupTokenType,LAUNCHPAD_AUTH,LAUNCHPAD_CONFIG,LAUNCHPAD_PLATFORM,LAUNCHPAD_PROGRAM,LIQUIDITY_FEES_DENOMINATOR,LIQUIDITY_FEES_NUMERATOR,LIQUIDITY_POOL_PROGRAM_ID_V5_MODEL,LIQUIDITY_VERSION_TO_SERUM_VERSION,LIQUIDITY_VERSION_TO_STATE_LAYOUT,LOCK_CPMM_AUTH,LOCK_CPMM_PROGRAM,LOCK_LIQUIDITY_SEED,LOG_B_2_X32,LOG_B_P_ERR_MARGIN_LOWER_X64,LOG_B_P_ERR_MARGIN_UPPER_X64,LOOKUP_TABLE_CACHE,LaunchConstantProductCurve,LaunchpadConfig,LaunchpadMintProgramBit,LaunchpadPool,LaunchpadPoolInitParam,LaunchpadVesting,Layout,LimitOrderLayout,LimitOrderMath,LimitOrderNonceLayout,LinearPriceCurve,LiquidityMathUtil,LockClPositionLayoutV2,LockPositionLayout,LogLevel,Logger,MAGIC_SQRT_10001,MARKET_STATE_LAYOUT_V2,MARKET_STATE_LAYOUT_V3,MARKET_VERSION_TO_STATE_LAYOUT,MAX_BASE64_SIZE,MAX_FEE_RATE,MAX_FEE_RATE_NUMERATOR,MAX_SQRT_PRICE_X64,MAX_TICK,MAX_TICK_SPACING,MEMO_PROGRAM_ID,METADATA_PROGRAM_ID,MIN_SQRT_PRICE_X64,MIN_TICK,MODEL_DATA_PUBKEY,Market,MathLaunch,NRVMint,OBSERVATION_NUM,OBSERVATION_UPDATE_DURATION_DEFAULT,OPEN_BOOK_PROGRAM,OPERATION_SEED,OPERATION_SIZE_USIZE,ObservationItemLayout,ObservationLayout,OperationLayout,OptionLayout,Owner,PAIMint,PERMISSION_SEED,PLATFORM_ALLOW_CONFIG_SEED,PLATFORM_FEE_VAULT_AUTH_SEED,PLATFORM_GLOBAL_ACCESS_SEED,PLATFORM_SEED,POOL_LOCK_ID_SEED,POOL_OBSERVATION_SEED,POOL_REWARD_VAULT_SEED,POOL_SEED,POOL_TICK_ARRAY_BITMAP_SEED,POOL_VAULT_SEED,POOL_VESTING_SEED,POSITION_SEED,Percent,PersonalPositionLayout,PlatformConfig,PlatformCurveParam,PoolFee,PoolFetchType,PoolInfoLayout,PoolStatusBitFlag,PoolStatusBitIndex,PoolUtil,PoolUtils,PositionRewardInfoLayout,PositionUtils,Price,ProtocolPositionLayout,Q128,Q64,RAYMint,REDUCTION_FACTOR_DENOMINATOR,RENT_PROGRAM_ID,RESOLUTION,REWARD_NUM,Raydium,RewardInfoLayout,RewardState,RoundDirection,Rounding,Router,SERUM_PROGRAMID_TO_VERSION,SERUM_PROGRAM_ID_V3,SERUM_VERSION_TO_PROGRAMID,SESSION_KEY,SOLMint,SOL_INFO,SPL_MINT_LAYOUT,SRMMint,STORAGE_KEY,SUPPORT_MINT_SEED,SYSTEM_PROGRAM_ID,SqrtPriceMath,StableLayout,Structure,SwapMathUtil,SwapState,TICK_ARRAY_BITMAP_SIZE,TICK_ARRAY_SEED,TICK_ARRAY_SIZE,TICK_ARRAY_SIZE_USIZE,TICK_TO_SQRT_PRICE_FACTORS,TOKEN_WSOL,TickArrayBitmapExtensionLayout,TickArrayBitmapUtil,TickArrayLayout,TickArrayUtil,TickLayout,TickUtil,Token,TokenAmount,TradeDirection,TradeDirectionOpposite,TxBuilder,TxVersion,U128_MAX,U256_MAX,U64_IGNORE_RANGE,U64_MAX,UInt,USDCMint,USDHMint,USDTMint,UTIL1216,Union,UpdateAmmConfigParam,UpdateOperationAccountParam,VOLATILITY_ACCUMULATOR_SCALE,VestingSchedule,Voter,VoterDepositEntry,VoterLockup,VoterRegistrar,VoterVotingMintConfig,WHITE_MINT_SIZE_USIZE,WSOLMint,WideBits,WrappedLayout,_100_PERCENT,abs,accountMeta,add,addComputeBudget,addLiquidityLayout,anchorDataBuf,array,associatedLedgerAccountLayout,bits,blob,bool,buyExactInInstruction,buyExactOutInstruction,calFarmRewardAmount,ceilDiv,ceilDivBN,checkLegacyTxSize,checkPoolToAmm,checkV0TxSize,checkedAdd,checkedMul,checkedSub,chunkArray,claimCreatorFee,claimPlatformFee,claimPlatformFeeFromVault,claimVestedToken,clearBit,clmmComputeInfoToApiInfo,closeAccountInstruction,closePlatformAllowConfigIns,collectCpFeeInstruction,collectCreatorFeePermissionlessInInstruction,commonSystemAccountMeta,confirmTransaction,cpmmLockPositionInstruction,createAssociatedLedgerAccountInstruction,createLogger,createPlatformAllowConfigIns,createPlatformConfig,createPlatformVestingAccountIns,createPoolFeeLayout,createPoolV4InstructionV2,createPoolV4Layout,createVestingAccount,createWSolAccountInstructions,cstr,currencyEquals,decimalToFraction,decimalToX64,decodeBool,div,divCeil,divRoundingUp,dwLayout,encodeBool,endlessRetry,eq,f32,f32be,f64,f64be,farmAddRewardLayout,farmLedgerLayoutV3_1,farmLedgerLayoutV3_2,farmLedgerLayoutV5_1,farmLedgerLayoutV5_2,farmLedgerLayoutV6_1,farmRewardInfoToConfig,farmRewardLayout,farmRewardRestartLayout,farmRewardTimeInfoLayout,farmStateV3Layout,farmStateV5Layout,farmStateV6Layout,fetchMultipleFarmInfoAndUpdate,fetchMultipleMintInfos,fetchTickArrays,findProgramAddress,fixedSwapInLayout,fixedSwapOutLayout,floorDiv,forecastTransactionSize,formatLayout,fromSignedI128,generatePubKey,getATAAddress,getAssociatedAuthority,getAssociatedConfigId,getAssociatedLedgerAccount,getAssociatedLedgerPoolAccount,getAssociatedOpenOrders,getAssociatedPoolKeys,getCollectFeeOnDescription,getCpLockPda,getCpmmPdaAmmConfigId,getCpmmPdaPoolId,getCreatePoolKeys,getDate,getDepositEntryIndex,getDevLookupTableCache,getDxByDyBaseIn,getDyByDxBaseIn,getEpochInfo,getFarmLedgerLayout,getFarmStateLayout,getLaunchpadPoolMintAProgram,getLaunchpadPoolMintBProgram,getLaunchpadPoolMintProgram,getLiquidityAssociatedAuthority,getLiquidityAssociatedId,getMainLookupTableCache,getMax,getMultipleAccountsInfo,getMultipleAccountsInfoWithCustomFlags,getMultipleLookupTableInfo,getOrderTick,getPdaAmmConfigId,getPdaCpiEvent,getPdaCreatorFeeVaultAuth,getPdaCreatorVault,getPdaDynamicFeeConfigAddress,getPdaExBitmapAccount,getPdaLaunchpadAuth,getPdaLaunchpadConfigId,getPdaLaunchpadPoolId,getPdaLaunchpadVaultId,getPdaLimitOrderAddress,getPdaLimitOrderNonceAddress,getPdaLockClPositionIdV2,getPdaLockPositionId,getPdaLpMint,getPdaMetadataKey,getPdaMintExAccount,getPdaMintExAccountCp,getPdaObservationAccount,getPdaObservationId,getPdaOperationAccount,getPdaPermission,getPdaPermissionId,getPdaPermissionedPoolId,getPdaPersonalPositionAddress,getPdaPlatformAllowConfig,getPdaPlatformConfigAccess,getPdaPlatformFeeVaultAuth,getPdaPlatformId,getPdaPlatformVault,getPdaPoolAuthority,getPdaPoolId,getPdaPoolRewardVaultId,getPdaPoolVaultId,getPdaProtocolPositionAddress,getPdaTickArrayAddress,getPdaVault,getPdaVestId,getRecentBlockHash,getRegistrarAddress,getSessionKey,getStablePrice,getTime,getTimestamp,getTokenOwnerRecordAddress,getTransferAmountFee,getTransferAmountFeeFromPost,getTransferAmountFeeFromPre,getTransferAmountFeeV2,getVoterAddress,getVoterWeightRecordAddress,getVotingMintAuthority,getVotingTokenMint,governanceCreateTokenOwnerRecord,greedy,gt,gte,i128,i32ToBytes,i32ToBytesBE,i64,i8,initPoolLayout,initTokenAccountInstruction,initialize,initializeMarket,initializeV2,initializeWithPermission,initializeWithToken2022,intersection,isBitSet,isDateAfter,isDateBefore,isDecimal,isMeaningfulNumber,isNumber,isValidFarmVersion,jsonInfo2PoolKeys,judgeFarmType,leastSignificantBit,liquidityStateV4Layout,liquidityStateV5Layout,lt,lte,mSOLMint,makeAMMSwapInstruction,makeAMMSwapV2Instruction,makeAddLiquidityInstruction,makeAddNewRewardInstruction,makeCollectCreatorFeeInstruction,makeCpmmLockInstruction,makeCreateCpmmPoolInInstruction,makeCreateFarmInstruction,makeCreateMarketInstruction,makeCreatorWithdrawFarmRewardInstruction,makeDepositCpmmInInstruction,makeDepositInstructionV3,makeDepositInstructionV5,makeDepositInstructionV6,makeDepositTokenInstruction,makeDepositWithdrawInstruction,makeInitPoolInstructionV4,makeRestartRewardInstruction,makeSwapCpmmBaseInInstruction,makeSwapCpmmBaseOutInstruction,makeSwapFixedInInstruction,makeSwapFixedOutInstruction,makeSwapInstruction,makeTransferInstruction,makeWithdrawCpmmInInstruction,makeWithdrawInstructionV3,makeWithdrawInstructionV4,makeWithdrawInstructionV5,makeWithdrawInstructionV6,makeWithdrawTokenInstruction,mask,minExpirationTime,mockV3CreatePoolInfo,modelDataInfoLayout,mostSignificantBit,mul,mulDivCeil,mulDivFloor,mulDivRound,mulFull,notInnerObject,ns64,ns64be,nu64,nu64be,offset,offsetDateTime,option,parseBigNumberish,parseNumberInfo,parseSimulateLogToJson,parseSimulateValue,parseTokenAccountResp,parseTokenInfo,poolLpAuthority,poolTypeV6,printSimulate,publicKey,realFarmStateV3Layout,realFarmStateV5Layout,realFarmV6Layout,removeLiquidityInstruction,removeLiquidityLayout,removePlatformCurveParamInstruction,route1Instruction,route2Instruction,routeInstruction,rustEnum,s16,s16be,s24,s24be,s32,s32be,s40,s40be,s48,s48be,s8,sellExactInInstruction,sellExactOut,seq,setBit,setLoggerLevel,shakeFractionDecimal,simulateMultipleInstruction,simulatePoolInfoInstruction,simulateTransaction,sleep,solToWSol,solToWSolToken,splAccountLayout,splitNumber,stSOLMint,str,struct,sub,swapBaseInAutoAccount,swapBaseInV2Instruction,swapBaseOutAutoAccount,swapBaseOutV2Instruction,swapInternal,tagged,tenExponential,toAmmComputePoolInfo,toApiV3Token,toBN,toBuffer,toFeeConfig,toFraction,toFractionWithDecimals,toLaunchpadMintProgramFlag,toPercent,toSignedI128,toToken,toTokenAmount,toTokenInfo,toTokenPrice,toTotalPrice,toTransferFeeConfig,toUsdCurrency,toggleBit,transformTxToBase64,tryParsePublicKey,txToBase64,u128,u128CheckedMul,u128SaturatingAdd,u128SaturatingSub,u16,u16ToBytes,u16ToBytesBE,u16be,u24,u24be,u256MulDivCeil,u256MulDivFloor,u32,u32be,u40,u40be,u48,u48be,u64,u64ToBytes,u8,u8ToBytes,union,unionArr,unionLayoutDiscriminator,uniq,updateFarmPoolInfo,updatePlatformConfig,updatePlatformCurveParamInstruction,updateReqHistory,usdMintBSet,utf8,validateAndParsePublicKey,validateFarmRewards,vec,vecU8,voterStakeRegistryCreateDepositEntry,voterStakeRegistryCreateVoter,voterStakeRegistryDeposit,voterStakeRegistryUpdateVoterWeightRecord,voterStakeRegistryWithdraw,wSolToSolToken,withdrawRewardLayout,wrappingSubU128,x64ToDecimal,xor,zeros});
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
//# sourceMappingURL=index.js.map