UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

1 lines 88 kB
var Fo=Object.defineProperty,vo=Object.defineProperties;var Vo=Object.getOwnPropertyDescriptors;var gt=Object.getOwnPropertySymbols;var wn=Object.prototype.hasOwnProperty,kn=Object.prototype.propertyIsEnumerable;var An=(s,e,t)=>e in s?Fo(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,L=(s,e)=>{for(var t in e||(e={}))wn.call(e,t)&&An(s,t,e[t]);if(gt)for(var t of gt(e))kn.call(e,t)&&An(s,t,e[t]);return s},E=(s,e)=>vo(s,Vo(e));var be=(s,e)=>{var t={};for(var o in s)wn.call(s,o)&&e.indexOf(o)<0&&(t[o]=s[o]);if(s!=null&&gt)for(var o of gt(s))e.indexOf(o)<0&&kn.call(s,o)&&(t[o]=s[o]);return t};import{PublicKey as Do}from"@solana/web3.js";import{get as Tn,set as _o}from"lodash";var Dt=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(o=>typeof o=="object"?JSON.stringify(o):o).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}},hn={},Eo={};function D(s){let e=Tn(hn,s);if(!e){let t=Tn(Eo,s);e=new Dt({name:s,logLevel:t}),_o(hn,s,e)}return e}import{MINT_SIZE as Za,TOKEN_PROGRAM_ID as Ha,getTransferFeeConfig as ja,unpackMint as $a}from"@solana/spl-token";var Wt=D("Raydium_accountInfo_util");async function Ie(s,e,t){let{batchRequest:o,commitment:i="confirmed",chunkCount:r=100}=L({batchRequest:!1},t),u=qt(e,r),c=new Array(u.length).fill([]);if(o){let b=u.map(A=>{let w=s._buildArgs([A.map(h=>h.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:w}}),d=qt(b,10);c=(await(await Promise.all(d.map(async A=>await s._rpcBatchRequest(A)))).flat()).map(A=>(A.error&&Wt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${A.error.message}`),A.result.value.map(w=>{if(w){let{data:h,executable:O,lamports:T,owner:I,rentEpoch:x}=w;return h.length!==2&&h[1]!=="base64"&&Wt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(h[0],"base64"),executable:O,lamports:T,owner:new Do(I),rentEpoch:x}}return null})))}else try{c=await Promise.all(u.map(b=>s.getMultipleAccountsInfo(b,i)))}catch(b){b instanceof Error&&Wt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${b.message}`)}return c.flat()}import ve from"bn.js";import oR from"decimal.js";import Qo from"big.js";import ys from"bn.js";import Wo from"toformat";var qo=Wo,Je=qo;import At from"big.js";import Go from"bn.js";import zo from"decimal.js-light";import et from"bn.js";var In=9007199254740991;function ue(s){let e=D("Raydium_parseBigNumberish");if(s instanceof et)return s;if(typeof s=="string"){if(s.match(/^-?[0-9]+$/))return new et(s);e.logWithError(`invalid BigNumberish string: ${s}`)}return typeof s=="number"?(s%1&&e.logWithError(`BigNumberish number underflow: ${s}`),(s>=In||s<=-In)&&e.logWithError(`BigNumberish number overflow: ${s}`),new et(String(s))):typeof s=="bigint"?new et(s.toString()):(e.error(`invalid BigNumberish value: ${s}`),new et(0))}var Pt=D("module/fraction"),Ut=Je(At),tt=Je(zo),Xo={[0]:tt.ROUND_DOWN,[1]:tt.ROUND_HALF_UP,[2]:tt.ROUND_UP},Yo={[0]:At.roundDown,[1]:At.roundHalfUp,[2]:At.roundUp},G=class{constructor(e,t=new Go(1)){this.numerator=ue(e),this.denominator=ue(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new G(this.denominator,this.numerator)}add(e){let t=e instanceof G?e:new G(ue(e));return this.denominator.eq(t.denominator)?new G(this.numerator.add(t.numerator),this.denominator):new G(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof G?e:new G(ue(e));return this.denominator.eq(t.denominator)?new G(this.numerator.sub(t.numerator),this.denominator):new G(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof G?e:new G(ue(e));return new G(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof G?e:new G(ue(e));return new G(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},o=1){Number.isInteger(e)||Pt.logWithError(`${e} is not an integer.`),e<=0&&Pt.logWithError(`${e} is not positive.`),tt.set({precision:e+1,rounding:Xo[o]});let i=new tt(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},o=1){return Number.isInteger(e)||Pt.logWithError(`${e} is not an integer.`),e<0&&Pt.logWithError(`${e} is negative.`),Ut.DP=e,Ut.RM=Yo[o]||1,new Ut(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Is=D("Raydium_amount"),Bs=Je(Qo);import{PublicKey as Ho}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Bn}from"@solana/spl-token";var wt={chainId:101,address:Ho.default.toBase58(),programId:Bn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Pe={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Bn.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};import{PublicKey as zt}from"@solana/web3.js";import{PublicKey as X,SystemProgram as Sn,SYSVAR_RENT_PUBKEY as jo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $o}from"@solana/spl-token";function _e({pubkey:s,isSigner:e=!1,isWritable:t=!0}){return{pubkey:s,isWritable:t,isSigner:e}}var Jo=[_e({pubkey:$o,isWritable:!1}),_e({pubkey:Sn.programId,isWritable:!1}),_e({pubkey:jo,isWritable:!1})];function xn({publicKey:s,transformSol:e}){let t=Kn(s.toString());if(t instanceof X)return e&&t.equals(Re)?ge:t;if(e&&t.toString()===Re.toBase58())return ge;if(typeof t=="string"){if(t===X.default.toBase58())return X.default;try{return new X(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Kn(s){try{return new X(s)}catch{return s}}var Gt=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ee=new X("SysvarRent111111111111111111111111111111111"),ei=new X("SysvarC1ock11111111111111111111111111111111"),kt=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),ti=new X("Sysvar1nstructions1111111111111111111111111"),Cn=Sn.programId,Ns=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ms=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Fs=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),vs=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Vs=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),_s=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Es=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ds=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ws=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),qs=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Us=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ge=new X("So11111111111111111111111111111111111111112"),Re=X.default;var Xt=class{constructor({mint:e,decimals:t,symbol:o,name:i,skipMint:r=!1,isToken2022:u=!1}){if(e===Re.toBase58()||e instanceof zt&&Re.equals(e)){this.decimals=Pe.decimals,this.symbol=Pe.symbol,this.name=Pe.name,this.mint=new zt(Pe.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=o||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=r?zt.default:xn({publicKey:e}),this.isToken2022=u}equals(e){return this===e?!0:this.mint.equals(e.mint)}},re=Xt;re.WSOL=new Xt(E(L({},Pe),{mint:Pe.address}));var Yt=class{constructor({decimals:e,symbol:t="UNKNOWN",name:o="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=o}equals(e){return this===e}},Tt=Yt;Tt.SOL=new Yt(wt);import ni from"bn.js";var tu=new G(new ni(100));var su=D("Raydium_price");import{merge as oC}from"lodash";import bu from"axios";var Rn={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_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",OWNER_LOCK_POSITION:"/position/clmm-lock/{owner}",IDO_KEYS:"/ido/key/ids",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"},oi=E(L({},Rn),{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 Eu=D("Raydium_Api");import{PublicKey as om,SystemProgram as im}from"@solana/web3.js";import{AccountLayout as cm,createAssociatedTokenAccountIdempotentInstruction as lm,TOKEN_PROGRAM_ID as mm,TOKEN_2022_PROGRAM_ID as dm}from"@solana/spl-token";import{PublicKey as Ge,sendAndConfirmTransaction as Jt,SystemProgram as ci,Transaction as it,TransactionMessage as rt,VersionedTransaction as at}from"@solana/web3.js";import li from"axios";import{PublicKey as Qt,AddressLookupTableAccount as qe}from"@solana/web3.js";async function Zt({connection:s,address:e,cluster:t="mainnet"}){let o=await Ie(s,[...new Set(e.map(r=>r.toString()))].map(r=>new Qt(r))),i={};for(let r=0;r<e.length;r++){let u=o[r],c=e[r];if(!u)continue;let b=new qe({key:c,state:qe.deserialize(u.data)});i[c.toString()]=b,t==="devnet"?We[c.toString()]=b:De[c.toString()]=b}return i}var De={},Ht=async s=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(De[e])return De;let t=new Qt(e),o=await s.getAccountInfo(t);return o&&(De[e]=new qe({key:t,state:qe.deserialize(o.data)})),De},We={},jt=async s=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(We[e])return We;let t=new Qt(e),o=await s.getAccountInfo(t);return o&&(We[e]=new qe({key:t,state:qe.deserialize(o.data)})),We};var te={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{ComputeBudgetProgram as Ln,Keypair as Nn,PublicKey as ii,Transaction as Mn,TransactionMessage as ri,VersionedTransaction as Fn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ai}from"@solana/spl-token";var On=D("Raydium_txUtil"),vn=1644;function ht(s){let e=[],t=[];return s.microLamports&&(e.push(Ln.setComputeUnitPrice({microLamports:s.microLamports})),t.push(te.SetComputeUnitPrice)),s.units&&(e.push(Ln.setComputeUnitLimit({units:s.units})),t.push(te.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Ue(s,e){var o,i;let t=e!=null?e:"confirmed";return(i=await((o=s.getLatestBlockhash)==null?void 0:o.call(s,{commitment:t})))==null?void 0:i.blockhash}async function It(s,e){return s.getSignatureStatuses([e]),new Promise((t,o)=>{let i=setTimeout(o,6e4);s.onSignature(e,r=>{if(clearTimeout(i),!r.err){t("");return}o(Object.assign(r.err,{txId:e}))},"confirmed")})}function $t(s,e){s.length<1&&On.logWithError(`no instructions provided: ${s.toString()}`),e.length<1&&On.logWithError(`no signers provided:, ${e.toString()}`);let t=new Mn;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...s);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<vn}catch{return!1}}function Ae(s,e){let[t,o]=ii.findProgramAddressSync(s,e);return{publicKey:t,nonce:o}}function nt({instructions:s,payer:e,signers:t}){return $t(s,[e,...t])}function ot({instructions:s,payer:e,lookupTableAddressAccount:t,recentBlockhash:o=Nn.generate().publicKey.toString()}){let r=new ri({payerKey:e,recentBlockhash:o,instructions:s}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Fn(r).serialize()).toString("base64").length<vn}catch{return!1}}var si=s=>Buffer.isBuffer(s)?s:s instanceof Uint8Array?Buffer.from(s.buffer,s.byteOffset,s.byteLength):Buffer.from(s),ui=s=>{let e=s.serialize({requireAllSignatures:!1,verifySignatures:!1});s instanceof Fn&&(e=si(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Le(s){let e=[];return s.forEach(t=>{t instanceof Mn&&(t.recentBlockhash||(t.recentBlockhash=ai.toBase58()),t.feePayer||(t.feePayer=Nn.generate().publicKey)),e.push(ui(t))}),console.log("simulate tx string:",e),e}var Bt=2e3,St=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 o;let e=(await li.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(o=e==null?void 0:e[15])!=null?o:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:o}=ht(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(ci.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new Ge(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(te.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let o=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(o))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:o=[],instructionTypes:i=[],endInstructionTypes:r=[],lookupTableAddress:u=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...o),this.instructionTypes.push(...i),this.endInstructionTypes.push(...r),this.lookupTableAddress.push(...u.filter(c=>c!==Ge.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:o}){return e===0?await this.buildV0(E(L({},t||{}),{lookupTableAddress:o})):this.build(t)}build(e){var o;let t=new it;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((o=this.owner)==null?void 0:o.signer)&&!this.signers.some(i=>i.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 i=>{var y;let{recentBlockHash:r,skipPreflight:u=!0,sendAndConfirm:c,notSendToRpc:b}=i||{},d=r!=null?r:await Ue(this.connection,this.blockhashCommitment);if(t.recentBlockhash=d,this.signers.length&&t.sign(...this.signers),Le([t]),(y=this.owner)!=null&&y.isKeyPair)return{txId:c?await Jt(this.connection,t,this.signers.find(w=>w.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:u}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:u}),signedTx:t};if(this.signAllTransactions){let A=await this.signAllTransactions([t]);if(this.signers.length)for(let w of A)try{w.sign(...this.signers)}catch{}return{txId:b?"":await this.connection.sendRawTransaction(A[0].serialize(),{skipPreflight:u}),signedTx:A[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var d;let{extraPreBuildData:t=[],extInfo:o}=e,{transaction:i}=this.build(o),r=t.filter(y=>y.transaction.instructions.length>0),u=[i,...r.map(y=>y.transaction)],c=[this.signers,...r.map(y=>y.signers)],b=[...this.instructionTypes,...r.map(y=>y.instructionTypes).flat()];return(d=this.owner)!=null&&d.signer&&c.forEach(y=>{y.some(A=>A.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:u,signers:c,instructionTypes:b,execute:async y=>{var x;let{sequentially:A,onTxUpdate:w,skipTxCount:h=0,recentBlockHash:O,skipPreflight:T=!0}=y||{},I=O!=null?O:await Ue(this.connection,this.blockhashCommitment);if((x=this.owner)!=null&&x.isKeyPair){if(A){let C=[],v=0;for(let V of u){if(++v,v<=h)continue;let P=await Jt(this.connection,V,this.signers.find(B=>B.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:T});C.push(P)}return{txIds:C,signedTxs:u}}return{txIds:await await Promise.all(u.map(async C=>(C.recentBlockhash=I,await this.connection.sendRawTransaction(C.serialize(),{skipPreflight:T})))),signedTxs:u}}if(this.signAllTransactions){let C=u.map((V,P)=>(V.recentBlockhash=I,c[P].length&&V.sign(...c[P]),V));Le(C);let v=await this.signAllTransactions(C);if(A){let V=0,P=[],B=async()=>{if(!v[V])return;let S=await this.connection.sendRawTransaction(v[V].serialize(),{skipPreflight:T});P.push({txId:S,status:"sent",signedTx:v[V]}),w==null||w([...P]),V++;let R=!1,N=null,_=null,le=U=>{N!==null&&clearInterval(N),_!==null&&this.connection.removeSignatureListener(_);let q=P.findIndex(oe=>oe.txId===S);if(q>-1){if(P[q].status==="error"||P[q].status==="success")return;P[q].status=U.err?"error":"success"}w==null||w([...P]),U.err||B()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var U;if(R){clearInterval(N);return}try{let q=await this.connection.getTransaction(S,{commitment:"confirmed",maxSupportedTransactionVersion:0});q&&(R=!0,clearInterval(N),le({err:((U=q.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",S))}catch(q){R=!0,clearInterval(N),console.error("getTransaction timeout:",q,S)}},Bt)),_=this.connection.onSignature(S,U=>{if(R){this.connection.removeSignatureListener(_);return}R=!0,le(U)},"confirmed"),this.connection.getSignatureStatus(S)};return await B(),{txIds:P.map(S=>S.txId),signedTxs:v}}else{let V=[];for(let P=0;P<v.length;P+=1){let B=await this.connection.sendRawTransaction(v[P].serialize(),{skipPreflight:T});V.push(B)}return{txIds:V,signedTxs:v}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:o}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:o||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:o})}async buildV0(e){var T;let O=e||{},{lookupTableCache:t={},lookupTableAddress:o=[],forerunCreate:i,recentBlockhash:r}=O,u=be(O,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),c=L(L({},this.cluster==="devnet"?await jt(this.connection):await Ht(this.connection)),t),b=Array.from(new Set([...o,...this.lookupTableAddress])),d=[];for(let I of b)c[I]===void 0&&d.push(new Ge(I));let y=await Zt({connection:this.connection,address:d});for(let[I,x]of Object.entries(y))c[I]=x;let A=i?Ge.default.toBase58():r!=null?r:await Ue(this.connection,this.blockhashCommitment),w=new rt({payerKey:this.feePayer,recentBlockhash:A,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(c));((T=this.owner)==null?void 0:T.signer)&&!this.signers.some(I=>I.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let h=new at(w);return h.sign(this.signers),{builder:this,transaction:h,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async I=>{var V;let{skipPreflight:x=!0,sendAndConfirm:C,notSendToRpc:v}=I||{};if(Le([h]),(V=this.owner)!=null&&V.isKeyPair){let P=await this.connection.sendTransaction(h,{skipPreflight:x});return C&&await It(this.connection,P),{txId:P,signedTx:h}}if(this.signAllTransactions){let P=await this.signAllTransactions([h]);if(this.signers.length)for(let B of P)try{B.sign(this.signers)}catch{}return{txId:v?"":await this.connection.sendTransaction(P[0],{skipPreflight:x}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:u||{}}}async buildV0MultiTx(e){var d;let{extraPreBuildData:t=[],buildProps:o}=e,{transaction:i}=await this.buildV0(o),r=t.filter(y=>y.builder.instructions.length>0),u=[i,...r.map(y=>y.transaction)],c=[this.signers,...r.map(y=>y.signers)],b=[...this.instructionTypes,...r.map(y=>y.instructionTypes).flat()];return(d=this.owner)!=null&&d.signer&&c.forEach(y=>{y.some(A=>A.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),u.forEach(async(y,A)=>{y.sign(c[A])}),{builder:this,transactions:u,signers:c,instructionTypes:b,buildProps:o,execute:async y=>{var T;let{sequentially:A,onTxUpdate:w,recentBlockHash:h,skipPreflight:O=!0}=y||{};if(h&&u.forEach(I=>I.message.recentBlockhash=h),Le(u),(T=this.owner)!=null&&T.isKeyPair){if(A){let I=[];for(let x of u){let C=await this.connection.sendTransaction(x,{skipPreflight:O});await It(this.connection,C),I.push(C)}return{txIds:I,signedTxs:u}}return{txIds:await Promise.all(u.map(async I=>await this.connection.sendTransaction(I,{skipPreflight:O}))),signedTxs:u}}if(this.signAllTransactions){let I=await this.signAllTransactions(u);if(A){let x=0,C=[],v=async()=>{if(!I[x])return;let V=await this.connection.sendTransaction(I[x],{skipPreflight:O});C.push({txId:V,status:"sent",signedTx:I[x]}),w==null||w([...C]),x++;let P=!1,B=null,S=null,R=N=>{B!==null&&clearInterval(B),S!==null&&this.connection.removeSignatureListener(S);let _=C.findIndex(le=>le.txId===V);if(_>-1){if(C[_].status==="error"||C[_].status==="success")return;C[_].status=N.err?"error":"success"}w==null||w([...C]),N.err||v()};this.loopMultiTxStatus&&(B=setInterval(async()=>{var N;if(P){clearInterval(B);return}try{let _=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});_&&(P=!0,clearInterval(B),R({err:((N=_.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",V))}catch(_){P=!0,clearInterval(B),console.error("getTransaction timeout:",_,V)}},Bt)),S=this.connection.onSignature(V,N=>{if(P){this.connection.removeSignatureListener(S);return}P=!0,R(N)},"confirmed"),this.connection.getSignatureStatus(V)};return v(),{txIds:[],signedTxs:I}}else{let x=[];for(let C=0;C<I.length;C+=1){let v=await this.connection.sendTransaction(I[C],{skipPreflight:O});x.push(v)}return{txIds:x,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var w;let A=e||{},{splitIns:t=[],computeBudgetConfig:o}=A,i=be(A,["splitIns","computeBudgetConfig"]),r=o?ht(o):{instructions:[],instructionTypes:[]},u=this.signers.reduce((h,O)=>E(L({},h),{[O.publicKey.toBase58()]:O}),{}),c=[],b=[],d=[],y=0;if(this.allInstructions.forEach(h=>{let O=[...d,h],T=o?[...r.instructions,...O]:O,x=[...new Set(O.map(C=>C.keys.filter(v=>v.isSigner).map(v=>v.pubkey.toString())).flat()).values()].map(C=>new Ge(C));if(h!==t[y]&&d.length<12&&(nt({instructions:T,payer:this.feePayer,signers:x})||nt({instructions:O,payer:this.feePayer,signers:x})))d.push(h);else{if(d.length===0)throw Error("item ins too big");y+=h===t[y]?1:0,nt({instructions:o?[...r.instructions,...d]:[...d],payer:this.feePayer,signers:x})?c.push(new it().add(...r.instructions,...d)):c.push(new it().add(...d)),b.push(Array.from(new Set(d.map(C=>C.keys.filter(v=>v.isSigner).map(v=>v.pubkey.toString())).flat())).map(C=>u[C]).filter(C=>C!==void 0)),d=[h]}}),d.length>0){let O=[...new Set(d.map(T=>T.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat()).values()].map(T=>u[T]).filter(T=>T!==void 0);nt({instructions:o?[...r.instructions,...d]:[...d],payer:this.feePayer,signers:O.map(T=>T.publicKey)})?c.push(new it().add(...r.instructions,...d)):c.push(new it().add(...d)),b.push(O)}return c.forEach(h=>h.feePayer=this.feePayer),(w=this.owner)!=null&&w.signer&&b.forEach(h=>{h.some(O=>O.publicKey.equals(this.owner.publicKey))||h.push(this.owner.signer)}),{builder:this,transactions:c,signers:b,instructionTypes:this.instructionTypes,execute:async h=>{var V;let{sequentially:O,onTxUpdate:T,skipTxCount:I=0,recentBlockHash:x,skipPreflight:C=!0}=h||{},v=x!=null?x:await Ue(this.connection,this.blockhashCommitment);if(c.forEach(async(P,B)=>{P.recentBlockhash=v,b[B].length&&P.sign(...b[B])}),Le(c),(V=this.owner)!=null&&V.isKeyPair){if(O){let P=0,B=[];for(let S of c){if(++P,P<=I){B.push("tx skipped");continue}let R=await Jt(this.connection,S,this.signers.find(N=>N.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:C});B.push(R)}return{txIds:B,signedTxs:c}}return{txIds:await Promise.all(c.map(async P=>await this.connection.sendRawTransaction(P.serialize(),{skipPreflight:C}))),signedTxs:c}}if(this.signAllTransactions){let P=await this.signAllTransactions(c.slice(I,c.length)),B=[...c.slice(0,I),...P];if(O){let S=0,R=[],N=async()=>{if(!B[S])return;S<I&&(R.push({txId:"",status:"success",signedTx:B[S]}),T==null||T([...R]),S++,N());let _=await this.connection.sendRawTransaction(B[S].serialize(),{skipPreflight:C});R.push({txId:_,status:"sent",signedTx:B[S]}),T==null||T([...R]),S++;let le=!1,U=null,q=null,oe=z=>{U!==null&&clearInterval(U),q!==null&&this.connection.removeSignatureListener(q);let se=R.findIndex(Te=>Te.txId===_);if(se>-1){if(R[se].status==="error"||R[se].status==="success")return;R[se].status=z.err?"error":"success"}T==null||T([...R]),z.err||N()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var z;if(le){clearInterval(U);return}try{let se=await this.connection.getTransaction(_,{commitment:"confirmed",maxSupportedTransactionVersion:0});se&&(le=!0,clearInterval(U),oe({err:((z=se.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",_))}catch(se){le=!0,clearInterval(U),console.error("getTransaction timeout:",se,_)}},Bt)),q=this.connection.onSignature(_,z=>{if(le){this.connection.removeSignatureListener(q);return}le=!0,oe(z)},"confirmed"),this.connection.getSignatureStatus(_)};return await N(),{txIds:R.map(_=>_.txId),signedTxs:B}}else{let S=[];for(let R=0;R<B.length;R+=1){let N=await this.connection.sendRawTransaction(B[R].serialize(),{skipPreflight:C});S.push(N)}return{txIds:S,signedTxs:B}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var V;let v=e||{},{computeBudgetConfig:t,splitIns:o=[],lookupTableCache:i={},lookupTableAddress:r=[],insCountLimit:u=12}=v,c=be(v,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),b=L(L({},this.cluster==="devnet"?await jt(this.connection):await Ht(this.connection)),i),d=Array.from(new Set([...this.lookupTableAddress,...r])),y=[];for(let P of d)b[P]===void 0&&y.push(new Ge(P));let A=await Zt({connection:this.connection,address:y});for(let[P,B]of Object.entries(A))b[P]=B;let w=t?ht(t):{instructions:[],instructionTypes:[]},h=await Ue(this.connection,this.blockhashCommitment),O=this.signers.reduce((P,B)=>E(L({},P),{[B.publicKey.toBase58()]:B}),{}),T=[],I=[],x=[],C=0;if(this.allInstructions.forEach(P=>{let B=[...x,P],S=t?[...w.instructions,...B]:B;if(P!==o[C]&&x.length<u&&(ot({instructions:S,payer:this.feePayer,lookupTableAddressAccount:b})||ot({instructions:B,payer:this.feePayer,lookupTableAddressAccount:b})))x.push(P);else{if(x.length===0)throw Error("item ins too big");C+=P===o[C]?1:0;let R={};for(let N of[...new Set(d)])b[N]!==void 0&&(R[N]=b[N]);if(t&&ot({instructions:[...w.instructions,...x],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:h})){let N=new rt({payerKey:this.feePayer,recentBlockhash:h,instructions:[...w.instructions,...x]}).compileToV0Message(Object.values(b));T.push(new at(N))}else{let N=new rt({payerKey:this.feePayer,recentBlockhash:h,instructions:[...x]}).compileToV0Message(Object.values(b));T.push(new at(N))}I.push(Array.from(new Set(x.map(N=>N.keys.filter(_=>_.isSigner).map(_=>_.pubkey.toString())).flat())).map(N=>O[N]).filter(N=>N!==void 0)),x=[P]}}),x.length>0){let B=[...new Set(x.map(S=>S.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat()).values()].map(S=>O[S]).filter(S=>S!==void 0);if(t&&ot({instructions:[...w.instructions,...x],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:h})){let S=new rt({payerKey:this.feePayer,recentBlockhash:h,instructions:[...w.instructions,...x]}).compileToV0Message(Object.values(b));T.push(new at(S))}else{let S=new rt({payerKey:this.feePayer,recentBlockhash:h,instructions:[...x]}).compileToV0Message(Object.values(b));T.push(new at(S))}I.push(B)}return(V=this.owner)!=null&&V.signer&&I.forEach(P=>{P.some(B=>B.publicKey.equals(this.owner.publicKey))||P.push(this.owner.signer)}),T.forEach((P,B)=>{P.sign(I[B])}),{builder:this,transactions:T,buildProps:e,signers:I,instructionTypes:this.instructionTypes,execute:async P=>{var le;let{sequentially:B,onTxUpdate:S,skipTxCount:R=0,recentBlockHash:N,skipPreflight:_=!0}=P||{};if(T.map(async(U,q)=>{I[q].length&&U.sign(I[q]),N&&(U.message.recentBlockhash=N)}),Le(T),(le=this.owner)!=null&&le.isKeyPair){if(B){let U=0,q=[];for(let oe of T){if(++U,U<=R){console.log("skip tx: ",U),q.push("tx skipped");continue}let z=await this.connection.sendTransaction(oe,{skipPreflight:_});await It(this.connection,z),q.push(z)}return{txIds:q,signedTxs:T}}return{txIds:await Promise.all(T.map(async U=>await this.connection.sendTransaction(U,{skipPreflight:_}))),signedTxs:T}}if(this.signAllTransactions){let U=await this.signAllTransactions(T.slice(R,T.length)),q=[...T.slice(0,R),...U];if(B){let oe=0,z=[],se=async()=>{if(!q[oe])return;if(oe<R){z.push({txId:"",status:"success",signedTx:q[oe]}),S==null||S([...z]),oe++,se();return}let Te=await this.connection.sendTransaction(q[oe],{skipPreflight:_});z.push({txId:Te,status:"sent",signedTx:q[oe]}),S==null||S([...z]),oe++;let je=!1,Ve=null,bt=null,Pn=Ce=>{Ve!==null&&clearInterval(Ve),bt!==null&&this.connection.removeSignatureListener(bt);let he=z.findIndex(Mo=>Mo.txId===Te);if(he>-1){if(z[he].status==="error"||z[he].status==="success")return;z[he].status=Ce.err?"error":"success"}S==null||S([...z]),Ce.err||se()};this.loopMultiTxStatus&&(Ve=setInterval(async()=>{var Ce;if(je){clearInterval(Ve);return}try{let he=await this.connection.getTransaction(Te,{commitment:"confirmed",maxSupportedTransactionVersion:0});he&&(je=!0,clearInterval(Ve),Pn({err:((Ce=he.meta)==null?void 0:Ce.err)||null}),console.log("tx status from getTransaction:",Te))}catch(he){je=!0,clearInterval(Ve),console.error("getTransaction timeout:",he,Te)}},Bt)),bt=this.connection.onSignature(Te,Ce=>{if(je){this.connection.removeSignatureListener(bt);return}je=!0,Pn(Ce)},"confirmed"),this.connection.getSignatureStatus(Te)};return se(),{txIds:[],signedTxs:q}}else{let oe=[];for(let z=0;z<q.length;z+=1){let se=await this.connection.sendTransaction(q[z],{skipPreflight:_});oe.push(se)}return{txIds:oe,signedTxs:q}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:c||{}}}};var en=(...s)=>s.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),ce=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=D(t)}createTxBuilder(e){return this.scope.checkOwner(),new St({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(en(e))}logInfo(...e){this.logger.info(en(e))}logAndCreateError(...e){let t=en(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Ml,SystemProgram as vl}from"@solana/web3.js";import El from"bn.js";import{createCloseAccountInstruction as Ul,createInitializeAccountInstruction as Gl,createTransferInstruction as zl,TOKEN_PROGRAM_ID as Xl}from"@solana/spl-token";import{Keypair as kl,PublicKey as Tl}from"@solana/web3.js";import Bl from"bn.js";import{TOKEN_PROGRAM_ID as Kl}from"@solana/spl-token";import{PublicKey as hi}from"@solana/web3.js";import qn,{isBN as Un}from"bn.js";import{bits as mi,BitStructure as xc,blob as di,Blob as Kc,cstr as Cc,f32 as Rc,f32be as Lc,f64 as Oc,f64be as Nc,greedy as Mc,Layout as pi,ns64 as Fc,ns64be as vc,nu64 as fi,nu64be as Vc,offset as yi,s16 as _c,s16be as Ec,s24 as Dc,s24be as Wc,s32 as bi,s32be as qc,s40 as Uc,s40be as Gc,s48 as zc,s48be as Xc,s8 as Yc,seq as gi,struct as Qc,Structure as Pi,u16 as Ai,u16be as Zc,u24 as Hc,u24be as jc,u32 as wi,u32be as $c,u40 as Jc,u40be as el,u48 as tl,u48be as nl,u8 as ki,UInt as Ti,union as ol,Union as il,unionLayoutDiscriminator as rl,utf8 as al}from"@solana/buffer-layout";var xt=pi,Vn=Pi;var tn=Ti;var _n=ki,ne=Ai;var Kt=wi;var En=fi;var fe=bi;var Dn=gi;var F=di;var nn=mi,Wn=yi;var Ne=class extends xt{constructor(t,o,i){super(t,i);this.blob=F(t),this.signed=o}decode(t,o=0){let i=new qn(this.blob.decode(t,o),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,o,i=0){return typeof t=="number"&&(t=new qn(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),o,i)}},Ct=class extends xt{constructor(t){super(8,t);this._lower=nn(Kt(),!1),this._upper=nn(Kt(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,o=0){let i=this._lower.decode(t,o),r=this._upper.decode(t,o+this._lower.span);return L(L({},i),r)}encode(t,o,i=0){return this._lower.encode(t,o,i)+this._upper.encode(t,o,i+this._lower.span)}};function p(s){return new tn(1,s)}function Y(s){return new tn(4,s)}function n(s){return new Ne(8,!1,s)}function M(s){return new Ne(16,!1,s)}function Gn(s){return new Ne(1,!0,s)}function ze(s){return new Ne(8,!0,s)}function zn(s){return new Ne(16,!0,s)}var st=class extends xt{constructor(t,o,i,r){super(t.span,r);this.layout=t,this.decoder=o,this.encoder=i}decode(t,o){return this.decoder(this.layout.decode(t,o))}encode(t,o,i){return this.layout.encode(this.encoder(t),o,i)}getSpan(t,o){return this.layout.getSpan(t,o)}};function a(s){return new st(F(32),e=>new hi(e),e=>e.toBuffer(),s)}function de(s){return new st(_n(),Ii,Bi,s)}function Ii(s){if(s===0)return!1;if(s===1)return!0;throw new Error("Invalid bool: "+s)}function Bi(s){return s?1:0}function Xn(s,e){let t=Kt("length"),o=f([t,g(s,Wn(t,-t.span),"values")]);return new st(o,({values:i})=>i,i=>({values:i}),e)}var on=class extends Vn{decode(e,t){return super.decode(e,t)}};function f(s,e,t){return new on(s,e,t)}function g(s,e,t){let o,i=typeof e=="number"?e:Un(e)?e.toNumber():new Proxy(e,{get(r,u){if(!o){let c=Reflect.get(r,"count");o=Un(c)?c.toNumber():c,Reflect.set(r,"count",o)}return Reflect.get(r,u)},set(r,u,c){return u==="count"&&(o=c),Reflect.set(r,u,c)}});return Dn(s,i,t)}var Rt=f([a("mint"),a("owner"),n("amount"),Y("delegateOption"),a("delegate"),p("state"),Y("isNativeOption"),n("isNative"),n("delegatedAmount"),Y("closeAuthorityOption"),a("closeAuthority")]);import{PublicKey as Kg,SystemProgram as Cg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Lg}from"@solana/spl-token";import{PublicKey as Am}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as km}from"@solana/spl-token";import{PublicKey as k}from"@solana/web3.js";var Qn=new k("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Zn=new k("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Hn=new k("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),rn=new k("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Bm=new k("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),xi=new k("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),jn=new k("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),$n=new k("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Sm=new k("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Ki=new k("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Jn=new k("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Ci=new k("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ri=new k("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),eo=new k("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),xm=new k("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Li=new k("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Oi=new k("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Ni=new k("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Mi=new k("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Fi=new k("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),an=new k("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),vi=new k("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Km=new k("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Vi=new k("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),_i=new k("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Ei=new k("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Cm=new k("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Rm=new k("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Lm=new k("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Om=new k("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Nm=new k("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX"),ut={IDO_PROGRAM_ID_V1:Oi,IDO_PROGRAM_ID_V2:Ni,IDO_PROGRAM_ID_V3:Mi,IDO_PROGRAM_ID_V4:Fi};var Ke={OPEN_BOOK_PROGRAM:new k("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new k("Ray1111111111111111111111111111111111111111"),AMM_V4:new k("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new k("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new k("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new k("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new k("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new k("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new k("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new k("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new k("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new k("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:k.default,Router:new k("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new k("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new k("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new k("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new k("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new k("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new k("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new k("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new k("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new k("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new k("Ray1111111111111111111111111111111111111111")};import Wg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as ry,TOKEN_2022_PROGRAM_ID as ay,TOKEN_PROGRAM_ID as sy}from"@solana/spl-token";import{PublicKey as cy}from"@solana/web3.js";import my from"bn.js";import py from"decimal.js";import{TOKEN_PROGRAM_ID as Ym}from"@solana/spl-token";import{PublicKey as jm}from"@solana/web3.js";var Di=f([Y("mintAuthorityOption"),a("mintAuthority"),n("supply"),p("decimals"),p("isInitialized"),Y("freezeAuthorityOption"),a("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as xf,TOKEN_2022_PROGRAM_ID as Kf,TOKEN_PROGRAM_ID as Cf}from"@solana/spl-token";import{Keypair as Of,PublicKey as Nf,SystemProgram as Ff,TransactionInstruction as vf}from"@solana/web3.js";import _f from"bn.js";import W from"bn.js";var Q=new W(1).shln(64),Ye=64,Wi=new W(1).shln(128),ct=new W(1).shln(64).subn(1),qi=new W(1).shln(128).subn(1),Be=-443636,Se=443636,Me=new W("4295048016"),Fe=new W("79226673521066979257578248091"),to=new W("59543866431248"),no=new W("184467440737095516"),oo=new W("15793534762490258745"),io=16;var sn=60,cd=new W("18446743708227953217"),ro=[{bit:0,factor:new W("fffcb933bd6fb800",16)},{bit:1,factor:new W("fff97272373d4000",16)},{bit:2,factor:new W("fff2e50f5f657000",16)},{bit:3,factor:new W("ffe5caca7e10f000",16)},{bit:4,factor:new W("ffcb9843d60f7000",16)},{bit:5,factor:new W("ff973b41fa98e800",16)},{bit:6,factor:new W("ff2ea16466c9b000",16)},{bit:7,factor:new W("fe5dee046a9a3800",16)},{bit:8,factor:new W("fcbe86c7900bb000",16)},{bit:9,factor:new W("f987a7253ac65800",16)},{bit:10,factor:new W("f3392b0822bb6000",16)},{bit:11,factor:new W("e7159475a2caf000",16)},{bit:12,factor:new W("d097f3bdfd2f2000",16)},{bit:13,factor:new W("a9f746462d9f8000",16)},{bit:14,factor:new W("70d869a156f31c00",16)},{bit:15,factor:new W("31be135f97ed3200",16)},{bit:16,factor:new W("9aa508b5b85a500",16)},{bit:17,factor:new W("5d6af8dedc582c",16)},{bit:18,factor:new W("2216e584f5fa",16)}],xe=1e6;var Ot=1e5,lt=1e4,ao=1e4,so=1e5;var mt=3,uo=100;var co=10,lo=100,Nt=14;var K=new W(0),ke=new W(1),ld=new W(-1);var md=new W("18446744073700000000");var Ui=f([F(8),p("bump"),ne("index"),a("owner"),Y("protocolFeeRate"),Y("tradeFeeRate"),ne("tickSpacing"),Y("fundFeeRate"),g(Y(),1),a("fundOwner"),g(n(),3)]),Gi=f([Y("blockTimestamp"),ze("tickCumulative"),g(n(),4)]),mo=f([F(8),de("initialized"),n("recentEpoch"),ne("observationIndex"),a("poolId"),g(Gi,uo,"observations"),g(n(),4)]),zi=f([ne("filterPeriod"),ne("decayPeriod"),ne("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),fe("tickSpacingIndexReference"),Y("volatilityReference"),Y("volatilityAccumulator"),n("lastUpdateTimestamp"),g(p(),46)]),Xi=f([p("state"),n("openTime"),n("endTime"),n("lastUpdateTime"),M("emissionsPerSecondX64"),n("totalEmissioned"),n("claimed"),a("mint"),a("vault"),a("creator"),M("growthGlobalX64")]),un=f([F(8),p("bump"),a("configId"),a("creator"),a("mintA"),a("mintB"),a("vaultA"),a("vaultB"),a("observationId"),p("mintDecimalsA"),p("mintDecimalsB"),ne("tickSpacing"),M("liquidity"),M("sqrtPriceX64"),fe("tickCurrent"),Y(),M("feeGrowthGlobalX64A"),M("feeGrowthGlobalX64B"),n("protocolFeesTokenA"),n("protocolFeesTokenB"),g(M(),4),p("status"),p("feeOn"),F(6),g(Xi,mt,"rewardInfos"),F(8*16,"tickArrayBitmap"),g(n(),4),n("fundFeesTokenA"),n("fundFeesTokenB"),n("startTime"),n("recentEpoch"),zi.replicate("dynamicFeeInfo"),g(n(),46)]),Yi=f([M("growthInsideLastX64"),n("rewardAmountOwed")]),Qi=f([F(8),p("bump"),a("nftMint"),a("poolId"),fe("tickLower"),fe("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),g(Yi,mt,"rewardInfos"),n("recentEpoch"),g(n(),7)]),yd=f([F(8),p("bump"),a("poolId"),fe("tickLower"),fe("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),g(M(),mt,"rewardGrowthInside"),n("recentEpoch"),g(n(),7)]),Zi=f([fe("tick"),zn("liquidityNet"),M("liquidityGross"),M("feeGrowthOutsideX64A"),M("feeGrowthOutsideX64B"),g(M(),mt,"rewardGrowthsOutsideX64"),n("orderPhase"),n("ordersAmount"),n("partFilledOrdersRemaining"),M("unfilledRatioX64"),g(Y(),3)]),po=f([F(8),a("poolId"),fe("startTickIndex"),g(Zi,sn,"ticks"),p("initializedTickCount"),n("recentEpoch"),g(p(),107)]),Hi=f([F(8),p("bump"),g(a(),co,"operationOwners"),g(a(),lo,"whitelistMints")]),ji=f([F(8),a("poolId"),a("owner"),fe("tick"),de("zeroForOne"),n("orderPhase"),n("totalAmount"),n("filledAmount"),n("settleBase"),n("settleOutput"),n("openTime"),M("unfilledRatioX64"),g(n(),4)]),fo=f([F(8),a("poolId"),F(8*8*Nt,"positiveTickArrayBitmap"),F(8*8*Nt,"negativeTickArrayBitmap")]),bd=f([F(8),ne("index"),ne("filterPeriod"),ne("decayPeriod"),ne("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),g(n(),8)]),$i=f([F(8),a("wallet"),p("nonceIndex"),n("orderNonce"),g(n(),4)]),gd=f([n(),p("bump"),a("owner"),a("poolId"),a("positionId"),a("nftAccount"),g(n(),8)]),Ji=f([F(8),p("bump"),a("lockOwner"),a("poolId"),a("positionId"),a("nftAccount"),a("lockNftMint"),n("recentEpoch"),g(n(),8)]);import wd from"bn.js";var Ld=Buffer.from("amm_config","utf8"),er=Buffer.from("pool","utf8"),tr=Buffer.from("pool_vault","utf8"),Od=Buffer.from("pool_reward_vault","utf8"),Nd=Buffer.from("position","utf8"),Md=Buffer.from("tick_array","utf8"),Fd=Buffer.from("operation","utf8"),vd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Vd=Buffer.from("observation","utf8"),_d=Buffer.from("support_mint","utf8"),Ed=Buffer.from("dynamic_fee_config","utf8");var Dd=Buffer.from("locked_position","utf8");import{sha256 as pr}from"js-sha256";import nr from"bn.js";import Gd from"decimal.js";function j(s,e,t){if(t.isZero())throw new Error("Division by zero");return s.mul(e).div(t)}function Z(s,e,t){if(t.isZero())throw new Error("Division by zero");let o=s.mul(e),i=o.div(t);return o.mod(t).isZero()?i:i.addn(1)}function Mt(s,e){return s.div(e).add(s.mod(e).isZero()?K:ke)}var Xd=new nr(1).shln(256).subn(1);function yo(s){return s.isZero()?-1:s.bitLength()-1}import ap from"bn.js";import J from"bn.js";import Qe from"decimal.js";var H=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>=Be&&e<=Se}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${Be}, ${Se}]`)}static getSqrtPriceAtTick(e){this.checkTick(e);let t=Math.abs(e),o=Q.clone();for(let{bit:i,factor:r}of ro)(t&1<<i)!==0&&(o=j(o,r,Q));return e>0&&(o=j(Q,Q,o)),o}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:o}){if(o){let i=H.getPriceAtTick(t,!1);return j(e,i,Q)}else{let i=H.getPriceAtTick(t,!0);return j(e,Q,i)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:o}){if(o){let i=H.getPriceAtTick(t,!0);return