UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

1 lines 82.2 kB
var To=Object.defineProperty,ho=Object.defineProperties;var Io=Object.getOwnPropertyDescriptors;var ft=Object.getOwnPropertySymbols;var mn=Object.prototype.hasOwnProperty,dn=Object.prototype.propertyIsEnumerable;var ln=(i,e,n)=>e in i?To(i,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):i[e]=n,L=(i,e)=>{for(var n in e||(e={}))mn.call(e,n)&&ln(i,n,e[n]);if(ft)for(var n of ft(e))dn.call(e,n)&&ln(i,n,e[n]);return i},_=(i,e)=>ho(i,Io(e));var ye=(i,e)=>{var n={};for(var o in i)mn.call(i,o)&&e.indexOf(o)<0&&(n[o]=i[o]);if(i!=null&&ft)for(var o of ft(i))e.indexOf(o)<0&&dn.call(i,o)&&(n[o]=i[o]);return n};import{PublicKey as xo}from"@solana/web3.js";import{get as pn,set as Bo}from"lodash";var Nt=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 n=e.map(o=>typeof o=="object"?JSON.stringify(o):o).join(", ");throw new Error(n)}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}},fn={},So={};function E(i){let e=pn(fn,i);if(!e){let n=pn(So,i);e=new Nt({name:i,logLevel:n}),Bo(fn,i,e)}return e}import{MINT_SIZE as qa,TOKEN_PROGRAM_ID as Ua,getTransferFeeConfig as Ga,unpackMint as za}from"@solana/spl-token";var Mt=E("Raydium_accountInfo_util");async function be(i,e,n){let{batchRequest:o,commitment:a="confirmed",chunkCount:l=100}=L({batchRequest:!1},n),m=Ft(e,l),s=new Array(m.length).fill([]);if(o){let y=m.map(g=>{let T=i._buildArgs([g.map(w=>w.toBase58())],a,"base64");return{methodName:"getMultipleAccounts",args:T}}),P=Ft(y,10);s=(await(await Promise.all(P.map(async g=>await i._rpcBatchRequest(g)))).flat()).map(g=>(g.error&&Mt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${g.error.message}`),g.result.value.map(T=>{if(T){let{data:w,executable:C,lamports:h,owner:I,rentEpoch:x}=T;return w.length!==2&&w[1]!=="base64"&&Mt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(w[0],"base64"),executable:C,lamports:h,owner:new xo(I),rentEpoch:x}}return null})))}else try{s=await Promise.all(m.map(y=>i.getMultipleAccountsInfo(y,a)))}catch(y){y instanceof Error&&Mt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${y.message}`)}return s.flat()}import Fe from"bn.js";import JC from"decimal.js";import Fo from"big.js";import us from"bn.js";import Ko from"toformat";var Co=Ko,$e=Co;import bt from"big.js";import Lo from"bn.js";import Oo from"decimal.js-light";import Je from"bn.js";var yn=9007199254740991;function re(i){let e=E("Raydium_parseBigNumberish");if(i instanceof Je)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Je(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=yn||i<=-yn)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Je(String(i))):typeof i=="bigint"?new Je(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Je(0))}var yt=E("module/fraction"),vt=$e(bt),et=$e(Oo),No={[0]:et.ROUND_DOWN,[1]:et.ROUND_HALF_UP,[2]:et.ROUND_UP},Mo={[0]:bt.roundDown,[1]:bt.roundHalfUp,[2]:bt.roundUp},G=class{constructor(e,n=new Lo(1)){this.numerator=re(e),this.denominator=re(n)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new G(this.denominator,this.numerator)}add(e){let n=e instanceof G?e:new G(re(e));return this.denominator.eq(n.denominator)?new G(this.numerator.add(n.numerator),this.denominator):new G(this.numerator.mul(n.denominator).add(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}sub(e){let n=e instanceof G?e:new G(re(e));return this.denominator.eq(n.denominator)?new G(this.numerator.sub(n.numerator),this.denominator):new G(this.numerator.mul(n.denominator).sub(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}mul(e){let n=e instanceof G?e:new G(re(e));return new G(this.numerator.mul(n.numerator),this.denominator.mul(n.denominator))}div(e){let n=e instanceof G?e:new G(re(e));return new G(this.numerator.mul(n.denominator),this.denominator.mul(n.numerator))}toSignificant(e,n={groupSeparator:""},o=1){Number.isInteger(e)||yt.logWithError(`${e} is not an integer.`),e<=0&&yt.logWithError(`${e} is not positive.`),et.set({precision:e+1,rounding:No[o]});let a=new et(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return a.toFormat(a.decimalPlaces(),n)}toFixed(e,n={groupSeparator:""},o=1){return Number.isInteger(e)||yt.logWithError(`${e} is not an integer.`),e<0&&yt.logWithError(`${e} is negative.`),vt.DP=e,vt.RM=Mo[o]||1,new vt(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,n)}isZero(){return this.numerator.isZero()}};var gs=E("Raydium_amount"),Ps=$e(Fo);import{PublicKey as Vo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as bn}from"@solana/spl-token";var gt={chainId:101,address:Vo.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 _t}from"@solana/web3.js";import{PublicKey as Y,SystemProgram as gn,SYSVAR_RENT_PUBKEY as _o}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Eo}from"@solana/spl-token";function Ve({pubkey:i,isSigner:e=!1,isWritable:n=!0}){return{pubkey:i,isWritable:n,isSigner:e}}var Do=[Ve({pubkey:Eo,isWritable:!1}),Ve({pubkey:gn.programId,isWritable:!1}),Ve({pubkey:_o,isWritable:!1})];function Pn({publicKey:i,transformSol:e}){let n=An(i.toString());if(n instanceof Y)return e&&n.equals(Be)?ge:n;if(e&&n.toString()===Be.toBase58())return ge;if(typeof n=="string"){if(n===Y.default.toBase58())return Y.default;try{return new Y(n)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function An(i){try{return new Y(i)}catch{return i}}var Vt=new Y("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),_e=new Y("SysvarRent111111111111111111111111111111111"),Wo=new Y("SysvarC1ock11111111111111111111111111111111"),Pt=new Y("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),qo=new Y("Sysvar1nstructions1111111111111111111111111"),wn=gn.programId,Ss=new Y("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),xs=new Y("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ks=new Y("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Cs=new Y("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Rs=new Y("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ls=new Y("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Os=new Y("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ns=new Y("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ms=new Y("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Fs=new Y("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),vs=new Y("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ge=new Y("So11111111111111111111111111111111111111112"),Be=Y.default;var Et=class{constructor({mint:e,decimals:n,symbol:o,name:a,skipMint:l=!1,isToken2022:m=!1}){if(e===Be.toBase58()||e instanceof _t&&Be.equals(e)){this.decimals=Pe.decimals,this.symbol=Pe.symbol,this.name=Pe.name,this.mint=new _t(Pe.address),this.isToken2022=!1;return}this.decimals=n,this.symbol=o||e.toString().substring(0,6),this.name=a||e.toString().substring(0,6),this.mint=l?_t.default:Pn({publicKey:e}),this.isToken2022=m}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ne=Et;ne.WSOL=new Et(_(L({},Pe),{mint:Pe.address}));var Dt=class{constructor({decimals:e,symbol:n="UNKNOWN",name:o="UNKNOWN"}){this.decimals=e,this.symbol=n,this.name=o}equals(e){return this===e}},At=Dt;At.SOL=new Dt(gt);import Uo from"bn.js";var Qs=new G(new Uo(100));var eu=E("Raydium_price");import{merge as JK}from"lodash";import cu from"axios";var kn={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"},Go=_(L({},kn),{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 Ou=E("Raydium_Api");import{PublicKey as Hl,SystemProgram as jl}from"@solana/web3.js";import{AccountLayout as nm,createAssociatedTokenAccountIdempotentInstruction as om,TOKEN_PROGRAM_ID as im,TOKEN_2022_PROGRAM_ID as rm}from"@solana/spl-token";import{PublicKey as Ue,sendAndConfirmTransaction as Yt,SystemProgram as Ho,Transaction as ot,TransactionMessage as it,VersionedTransaction as rt}from"@solana/web3.js";import jo from"axios";import{PublicKey as Wt,AddressLookupTableAccount as We}from"@solana/web3.js";async function qt({connection:i,address:e,cluster:n="mainnet"}){let o=await be(i,[...new Set(e.map(l=>l.toString()))].map(l=>new Wt(l))),a={};for(let l=0;l<e.length;l++){let m=o[l],s=e[l];if(!m)continue;let y=new We({key:s,state:We.deserialize(m.data)});a[s.toString()]=y,n==="devnet"?De[s.toString()]=y:Ee[s.toString()]=y}return a}var Ee={},Ut=async i=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Ee[e])return Ee;let n=new Wt(e),o=await i.getAccountInfo(n);return o&&(Ee[e]=new We({key:n,state:We.deserialize(o.data)})),Ee},De={},Gt=async i=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(De[e])return De;let n=new Wt(e),o=await i.getAccountInfo(n);return o&&(De[e]=new We({key:n,state:We.deserialize(o.data)})),De};var $={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{ComputeBudgetProgram as Tn,Keypair as In,PublicKey as zo,Transaction as Bn,TransactionMessage as Yo,VersionedTransaction as Sn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Xo}from"@solana/spl-token";var hn=E("Raydium_txUtil"),xn=1644;function wt(i){let e=[],n=[];return i.microLamports&&(e.push(Tn.setComputeUnitPrice({microLamports:i.microLamports})),n.push($.SetComputeUnitPrice)),i.units&&(e.push(Tn.setComputeUnitLimit({units:i.units})),n.push($.SetComputeUnitLimit)),{instructions:e,instructionTypes:n}}async function qe(i,e){var o,a;let n=e!=null?e:"confirmed";return(a=await((o=i.getLatestBlockhash)==null?void 0:o.call(i,{commitment:n})))==null?void 0:a.blockhash}async function kt(i,e){return i.getSignatureStatuses([e]),new Promise((n,o)=>{let a=setTimeout(o,6e4);i.onSignature(e,l=>{if(clearTimeout(a),!l.err){n("");return}o(Object.assign(l.err,{txId:e}))},"confirmed")})}function zt(i,e){i.length<1&&hn.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&hn.logWithError(`no signers provided:, ${e.toString()}`);let n=new Bn;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=e[0],n.add(...i);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<xn}catch{return!1}}function ce(i,e){let[n,o]=zo.findProgramAddressSync(i,e);return{publicKey:n,nonce:o}}function tt({instructions:i,payer:e,signers:n}){return zt(i,[e,...n])}function nt({instructions:i,payer:e,lookupTableAddressAccount:n,recentBlockhash:o=In.generate().publicKey.toString()}){let l=new Yo({payerKey:e,recentBlockhash:o,instructions:i}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new Sn(l).serialize()).toString("base64").length<xn}catch{return!1}}var Qo=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i),Zo=i=>{let e=i.serialize({requireAllSignatures:!1,verifySignatures:!1});i instanceof Sn&&(e=Qo(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Se(i){let e=[];return i.forEach(n=>{n instanceof Bn&&(n.recentBlockhash||(n.recentBlockhash=Xo.toBase58()),n.feePayer||(n.feePayer=In.generate().publicKey)),e.push(Zo(n))}),console.log("simulate tx string:",e),e}var Tt=2e3,ht=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 jo.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:n}=(o=e==null?void 0:e[15])!=null?o:{};if(!!n)return{units:6e5,microLamports:Math.min(Math.ceil(n*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:n,instructionTypes:o}=wt(e);return this.instructions.unshift(...n),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(e){var n;return e?(this.endInstructions.push(Ho.transfer({fromPubkey:(n=e.feePayer)!=null?n:this.feePayer,toPubkey:new Ue(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push($.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:n}){try{let o=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(o))return;n&&this.instructions.unshift(...n)}catch{n&&this.instructions.unshift(...n)}}addInstruction({instructions:e=[],endInstructions:n=[],signers:o=[],instructionTypes:a=[],endInstructionTypes:l=[],lookupTableAddress:m=[]}){return this.instructions.push(...e),this.endInstructions.push(...n),this.signers.push(...o),this.instructionTypes.push(...a),this.endInstructionTypes.push(...l),this.lookupTableAddress.push(...m.filter(s=>s!==Ue.default.toString())),this}async versionBuild({txVersion:e,extInfo:n,lookupTableAddress:o}){return e===0?await this.buildV0(_(L({},n||{}),{lookupTableAddress:o})):this.build(n)}build(e){var o;let n=new ot;return this.allInstructions.length&&n.add(...this.allInstructions),n.feePayer=this.feePayer,((o=this.owner)==null?void 0:o.signer)&&!this.signers.some(a=>a.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:n,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async a=>{var f;let{recentBlockHash:l,skipPreflight:m=!0,sendAndConfirm:s,notSendToRpc:y}=a||{},P=l!=null?l:await qe(this.connection,this.blockhashCommitment);if(n.recentBlockhash=P,this.signers.length&&n.sign(...this.signers),Se([n]),(f=this.owner)!=null&&f.isKeyPair)return{txId:s?await Yt(this.connection,n,this.signers.find(T=>T.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:m}):await this.connection.sendRawTransaction(n.serialize(),{skipPreflight:m}),signedTx:n};if(this.signAllTransactions){let g=await this.signAllTransactions([n]);if(this.signers.length)for(let T of g)try{T.sign(...this.signers)}catch{}return{txId:y?"":await this.connection.sendRawTransaction(g[0].serialize(),{skipPreflight:m}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var P;let{extraPreBuildData:n=[],extInfo:o}=e,{transaction:a}=this.build(o),l=n.filter(f=>f.transaction.instructions.length>0),m=[a,...l.map(f=>f.transaction)],s=[this.signers,...l.map(f=>f.signers)],y=[...this.instructionTypes,...l.map(f=>f.instructionTypes).flat()];return(P=this.owner)!=null&&P.signer&&s.forEach(f=>{f.some(g=>g.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:m,signers:s,instructionTypes:y,execute:async f=>{var x;let{sequentially:g,onTxUpdate:T,skipTxCount:w=0,recentBlockHash:C,skipPreflight:h=!0}=f||{},I=C!=null?C:await qe(this.connection,this.blockhashCommitment);if((x=this.owner)!=null&&x.isKeyPair){if(g){let K=[],F=0;for(let v of m){if(++F,F<=w)continue;let A=await Yt(this.connection,v,this.signers.find(B=>B.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:h});K.push(A)}return{txIds:K,signedTxs:m}}return{txIds:await await Promise.all(m.map(async K=>(K.recentBlockhash=I,await this.connection.sendRawTransaction(K.serialize(),{skipPreflight:h})))),signedTxs:m}}if(this.signAllTransactions){let K=m.map((v,A)=>(v.recentBlockhash=I,s[A].length&&v.sign(...s[A]),v));Se(K);let F=await this.signAllTransactions(K);if(g){let v=0,A=[],B=async()=>{if(!F[v])return;let S=await this.connection.sendRawTransaction(F[v].serialize(),{skipPreflight:h});A.push({txId:S,status:"sent",signedTx:F[v]}),T==null||T([...A]),v++;let R=!1,O=null,V=null,ue=U=>{O!==null&&clearInterval(O),V!==null&&this.connection.removeSignatureListener(V);let W=A.findIndex(ee=>ee.txId===S);if(W>-1){if(A[W].status==="error"||A[W].status==="success")return;A[W].status=U.err?"error":"success"}T==null||T([...A]),U.err||B()};this.loopMultiTxStatus&&(O=setInterval(async()=>{var U;if(R){clearInterval(O);return}try{let W=await this.connection.getTransaction(S,{commitment:"confirmed",maxSupportedTransactionVersion:0});W&&(R=!0,clearInterval(O),ue({err:((U=W.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",S))}catch(W){R=!0,clearInterval(O),console.error("getTransaction timeout:",W,S)}},Tt)),V=this.connection.onSignature(S,U=>{if(R){this.connection.removeSignatureListener(V);return}R=!0,ue(U)},"confirmed"),this.connection.getSignatureStatus(S)};return await B(),{txIds:A.map(S=>S.txId),signedTxs:F}}else{let v=[];for(let A=0;A<F.length;A+=1){let B=await this.connection.sendRawTransaction(F[A].serialize(),{skipPreflight:h});v.push(B)}return{txIds:v,signedTxs:F}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:n,extInfo:o}){return n===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:o||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:o})}async buildV0(e){var h;let C=e||{},{lookupTableCache:n={},lookupTableAddress:o=[],forerunCreate:a,recentBlockhash:l}=C,m=ye(C,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),s=L(L({},this.cluster==="devnet"?await Gt(this.connection):await Ut(this.connection)),n),y=Array.from(new Set([...o,...this.lookupTableAddress])),P=[];for(let I of y)s[I]===void 0&&P.push(new Ue(I));let f=await qt({connection:this.connection,address:P});for(let[I,x]of Object.entries(f))s[I]=x;let g=a?Ue.default.toBase58():l!=null?l:await qe(this.connection,this.blockhashCommitment),T=new it({payerKey:this.feePayer,recentBlockhash:g,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s));((h=this.owner)==null?void 0:h.signer)&&!this.signers.some(I=>I.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let w=new rt(T);return w.sign(this.signers),{builder:this,transaction:w,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async I=>{var v;let{skipPreflight:x=!0,sendAndConfirm:K,notSendToRpc:F}=I||{};if(Se([w]),(v=this.owner)!=null&&v.isKeyPair){let A=await this.connection.sendTransaction(w,{skipPreflight:x});return K&&await kt(this.connection,A),{txId:A,signedTx:w}}if(this.signAllTransactions){let A=await this.signAllTransactions([w]);if(this.signers.length)for(let B of A)try{B.sign(this.signers)}catch{}return{txId:F?"":await this.connection.sendTransaction(A[0],{skipPreflight:x}),signedTx:A[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:m||{}}}async buildV0MultiTx(e){var P;let{extraPreBuildData:n=[],buildProps:o}=e,{transaction:a}=await this.buildV0(o),l=n.filter(f=>f.builder.instructions.length>0),m=[a,...l.map(f=>f.transaction)],s=[this.signers,...l.map(f=>f.signers)],y=[...this.instructionTypes,...l.map(f=>f.instructionTypes).flat()];return(P=this.owner)!=null&&P.signer&&s.forEach(f=>{f.some(g=>g.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),m.forEach(async(f,g)=>{f.sign(s[g])}),{builder:this,transactions:m,signers:s,instructionTypes:y,buildProps:o,execute:async f=>{var h;let{sequentially:g,onTxUpdate:T,recentBlockHash:w,skipPreflight:C=!0}=f||{};if(w&&m.forEach(I=>I.message.recentBlockhash=w),Se(m),(h=this.owner)!=null&&h.isKeyPair){if(g){let I=[];for(let x of m){let K=await this.connection.sendTransaction(x,{skipPreflight:C});await kt(this.connection,K),I.push(K)}return{txIds:I,signedTxs:m}}return{txIds:await Promise.all(m.map(async I=>await this.connection.sendTransaction(I,{skipPreflight:C}))),signedTxs:m}}if(this.signAllTransactions){let I=await this.signAllTransactions(m);if(g){let x=0,K=[],F=async()=>{if(!I[x])return;let v=await this.connection.sendTransaction(I[x],{skipPreflight:C});K.push({txId:v,status:"sent",signedTx:I[x]}),T==null||T([...K]),x++;let A=!1,B=null,S=null,R=O=>{B!==null&&clearInterval(B),S!==null&&this.connection.removeSignatureListener(S);let V=K.findIndex(ue=>ue.txId===v);if(V>-1){if(K[V].status==="error"||K[V].status==="success")return;K[V].status=O.err?"error":"success"}T==null||T([...K]),O.err||F()};this.loopMultiTxStatus&&(B=setInterval(async()=>{var O;if(A){clearInterval(B);return}try{let V=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(A=!0,clearInterval(B),R({err:((O=V.meta)==null?void 0:O.err)||null}),console.log("tx status from getTransaction:",v))}catch(V){A=!0,clearInterval(B),console.error("getTransaction timeout:",V,v)}},Tt)),S=this.connection.onSignature(v,O=>{if(A){this.connection.removeSignatureListener(S);return}A=!0,R(O)},"confirmed"),this.connection.getSignatureStatus(v)};return F(),{txIds:[],signedTxs:I}}else{let x=[];for(let K=0;K<I.length;K+=1){let F=await this.connection.sendTransaction(I[K],{skipPreflight:C});x.push(F)}return{txIds:x,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var T;let g=e||{},{splitIns:n=[],computeBudgetConfig:o}=g,a=ye(g,["splitIns","computeBudgetConfig"]),l=o?wt(o):{instructions:[],instructionTypes:[]},m=this.signers.reduce((w,C)=>_(L({},w),{[C.publicKey.toBase58()]:C}),{}),s=[],y=[],P=[],f=0;if(this.allInstructions.forEach(w=>{let C=[...P,w],h=o?[...l.instructions,...C]:C,x=[...new Set(C.map(K=>K.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat()).values()].map(K=>new Ue(K));if(w!==n[f]&&P.length<12&&(tt({instructions:h,payer:this.feePayer,signers:x})||tt({instructions:C,payer:this.feePayer,signers:x})))P.push(w);else{if(P.length===0)throw Error("item ins too big");f+=w===n[f]?1:0,tt({instructions:o?[...l.instructions,...P]:[...P],payer:this.feePayer,signers:x})?s.push(new ot().add(...l.instructions,...P)):s.push(new ot().add(...P)),y.push(Array.from(new Set(P.map(K=>K.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat())).map(K=>m[K]).filter(K=>K!==void 0)),P=[w]}}),P.length>0){let C=[...new Set(P.map(h=>h.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat()).values()].map(h=>m[h]).filter(h=>h!==void 0);tt({instructions:o?[...l.instructions,...P]:[...P],payer:this.feePayer,signers:C.map(h=>h.publicKey)})?s.push(new ot().add(...l.instructions,...P)):s.push(new ot().add(...P)),y.push(C)}return s.forEach(w=>w.feePayer=this.feePayer),(T=this.owner)!=null&&T.signer&&y.forEach(w=>{w.some(C=>C.publicKey.equals(this.owner.publicKey))||w.push(this.owner.signer)}),{builder:this,transactions:s,signers:y,instructionTypes:this.instructionTypes,execute:async w=>{var v;let{sequentially:C,onTxUpdate:h,skipTxCount:I=0,recentBlockHash:x,skipPreflight:K=!0}=w||{},F=x!=null?x:await qe(this.connection,this.blockhashCommitment);if(s.forEach(async(A,B)=>{A.recentBlockhash=F,y[B].length&&A.sign(...y[B])}),Se(s),(v=this.owner)!=null&&v.isKeyPair){if(C){let A=0,B=[];for(let S of s){if(++A,A<=I){B.push("tx skipped");continue}let R=await Yt(this.connection,S,this.signers.find(O=>O.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:K});B.push(R)}return{txIds:B,signedTxs:s}}return{txIds:await Promise.all(s.map(async A=>await this.connection.sendRawTransaction(A.serialize(),{skipPreflight:K}))),signedTxs:s}}if(this.signAllTransactions){let A=await this.signAllTransactions(s.slice(I,s.length)),B=[...s.slice(0,I),...A];if(C){let S=0,R=[],O=async()=>{if(!B[S])return;S<I&&(R.push({txId:"",status:"success",signedTx:B[S]}),h==null||h([...R]),S++,O());let V=await this.connection.sendRawTransaction(B[S].serialize(),{skipPreflight:K});R.push({txId:V,status:"sent",signedTx:B[S]}),h==null||h([...R]),S++;let ue=!1,U=null,W=null,ee=z=>{U!==null&&clearInterval(U),W!==null&&this.connection.removeSignatureListener(W);let ie=R.findIndex(ke=>ke.txId===V);if(ie>-1){if(R[ie].status==="error"||R[ie].status==="success")return;R[ie].status=z.err?"error":"success"}h==null||h([...R]),z.err||O()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var z;if(ue){clearInterval(U);return}try{let ie=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});ie&&(ue=!0,clearInterval(U),ee({err:((z=ie.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",V))}catch(ie){ue=!0,clearInterval(U),console.error("getTransaction timeout:",ie,V)}},Tt)),W=this.connection.onSignature(V,z=>{if(ue){this.connection.removeSignatureListener(W);return}ue=!0,ee(z)},"confirmed"),this.connection.getSignatureStatus(V)};return await O(),{txIds:R.map(V=>V.txId),signedTxs:B}}else{let S=[];for(let R=0;R<B.length;R+=1){let O=await this.connection.sendRawTransaction(B[R].serialize(),{skipPreflight:K});S.push(O)}return{txIds:S,signedTxs:B}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}async sizeCheckBuildV0(e){var v;let F=e||{},{computeBudgetConfig:n,splitIns:o=[],lookupTableCache:a={},lookupTableAddress:l=[],insCountLimit:m=12}=F,s=ye(F,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),y=L(L({},this.cluster==="devnet"?await Gt(this.connection):await Ut(this.connection)),a),P=Array.from(new Set([...this.lookupTableAddress,...l])),f=[];for(let A of P)y[A]===void 0&&f.push(new Ue(A));let g=await qt({connection:this.connection,address:f});for(let[A,B]of Object.entries(g))y[A]=B;let T=n?wt(n):{instructions:[],instructionTypes:[]},w=await qe(this.connection,this.blockhashCommitment),C=this.signers.reduce((A,B)=>_(L({},A),{[B.publicKey.toBase58()]:B}),{}),h=[],I=[],x=[],K=0;if(this.allInstructions.forEach(A=>{let B=[...x,A],S=n?[...T.instructions,...B]:B;if(A!==o[K]&&x.length<m&&(nt({instructions:S,payer:this.feePayer,lookupTableAddressAccount:y})||nt({instructions:B,payer:this.feePayer,lookupTableAddressAccount:y})))x.push(A);else{if(x.length===0)throw Error("item ins too big");K+=A===o[K]?1:0;let R={};for(let O of[...new Set(P)])y[O]!==void 0&&(R[O]=y[O]);if(n&&nt({instructions:[...T.instructions,...x],payer:this.feePayer,lookupTableAddressAccount:y,recentBlockhash:w})){let O=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...T.instructions,...x]}).compileToV0Message(Object.values(y));h.push(new rt(O))}else{let O=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...x]}).compileToV0Message(Object.values(y));h.push(new rt(O))}I.push(Array.from(new Set(x.map(O=>O.keys.filter(V=>V.isSigner).map(V=>V.pubkey.toString())).flat())).map(O=>C[O]).filter(O=>O!==void 0)),x=[A]}}),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=>C[S]).filter(S=>S!==void 0);if(n&&nt({instructions:[...T.instructions,...x],payer:this.feePayer,lookupTableAddressAccount:y,recentBlockhash:w})){let S=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...T.instructions,...x]}).compileToV0Message(Object.values(y));h.push(new rt(S))}else{let S=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...x]}).compileToV0Message(Object.values(y));h.push(new rt(S))}I.push(B)}return(v=this.owner)!=null&&v.signer&&I.forEach(A=>{A.some(B=>B.publicKey.equals(this.owner.publicKey))||A.push(this.owner.signer)}),h.forEach((A,B)=>{A.sign(I[B])}),{builder:this,transactions:h,buildProps:e,signers:I,instructionTypes:this.instructionTypes,execute:async A=>{var ue;let{sequentially:B,onTxUpdate:S,skipTxCount:R=0,recentBlockHash:O,skipPreflight:V=!0}=A||{};if(h.map(async(U,W)=>{I[W].length&&U.sign(I[W]),O&&(U.message.recentBlockhash=O)}),Se(h),(ue=this.owner)!=null&&ue.isKeyPair){if(B){let U=0,W=[];for(let ee of h){if(++U,U<=R){console.log("skip tx: ",U),W.push("tx skipped");continue}let z=await this.connection.sendTransaction(ee,{skipPreflight:V});await kt(this.connection,z),W.push(z)}return{txIds:W,signedTxs:h}}return{txIds:await Promise.all(h.map(async U=>await this.connection.sendTransaction(U,{skipPreflight:V}))),signedTxs:h}}if(this.signAllTransactions){let U=await this.signAllTransactions(h.slice(R,h.length)),W=[...h.slice(0,R),...U];if(B){let ee=0,z=[],ie=async()=>{if(!W[ee])return;if(ee<R){z.push({txId:"",status:"success",signedTx:W[ee]}),S==null||S([...z]),ee++,ie();return}let ke=await this.connection.sendTransaction(W[ee],{skipPreflight:V});z.push({txId:ke,status:"sent",signedTx:W[ee]}),S==null||S([...z]),ee++;let He=!1,ve=null,pt=null,cn=Ie=>{ve!==null&&clearInterval(ve),pt!==null&&this.connection.removeSignatureListener(pt);let Te=z.findIndex(ko=>ko.txId===ke);if(Te>-1){if(z[Te].status==="error"||z[Te].status==="success")return;z[Te].status=Ie.err?"error":"success"}S==null||S([...z]),Ie.err||ie()};this.loopMultiTxStatus&&(ve=setInterval(async()=>{var Ie;if(He){clearInterval(ve);return}try{let Te=await this.connection.getTransaction(ke,{commitment:"confirmed",maxSupportedTransactionVersion:0});Te&&(He=!0,clearInterval(ve),cn({err:((Ie=Te.meta)==null?void 0:Ie.err)||null}),console.log("tx status from getTransaction:",ke))}catch(Te){He=!0,clearInterval(ve),console.error("getTransaction timeout:",Te,ke)}},Tt)),pt=this.connection.onSignature(ke,Ie=>{if(He){this.connection.removeSignatureListener(pt);return}He=!0,cn(Ie)},"confirmed"),this.connection.getSignatureStatus(ke)};return ie(),{txIds:[],signedTxs:W}}else{let ee=[];for(let z=0;z<W.length;z+=1){let ie=await this.connection.sendTransaction(W[z],{skipPreflight:V});ee.push(ie)}return{txIds:ee,signedTxs:W}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}};var Xt=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),ae=class{constructor({scope:e,moduleName:n}){this.disabled=!1;this.scope=e,this.logger=E(n)}createTxBuilder(e){return this.scope.checkOwner(),new ht({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(Xt(e))}logInfo(...e){this.logger.info(Xt(e))}logAndCreateError(...e){let n=Xt(e);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as xl,SystemProgram as Cl}from"@solana/web3.js";import Ol from"bn.js";import{createCloseAccountInstruction as vl,createInitializeAccountInstruction as Vl,createTransferInstruction as _l,TOKEN_PROGRAM_ID as El}from"@solana/spl-token";import{Keypair as fl,PublicKey as yl}from"@solana/web3.js";import Pl from"bn.js";import{TOKEN_PROGRAM_ID as kl}from"@solana/spl-token";import{PublicKey as li}from"@solana/web3.js";import Nn,{isBN as Mn}from"bn.js";import{bits as $o,BitStructure as wc,blob as Jo,Blob as kc,cstr as Tc,f32 as hc,f32be as Ic,f64 as Bc,f64be as Sc,greedy as xc,Layout as ei,ns64 as Kc,ns64be as Cc,nu64 as ti,nu64be as Rc,offset as ni,s16 as Lc,s16be as Oc,s24 as Nc,s24be as Mc,s32 as oi,s32be as Fc,s40 as vc,s40be as Vc,s48 as _c,s48be as Ec,s8 as Dc,seq as ii,struct as Wc,Structure as ri,u16 as ai,u16be as qc,u24 as Uc,u24be as Gc,u32 as si,u32be as zc,u40 as Yc,u40be as Xc,u48 as Qc,u48be as Zc,u8 as ui,UInt as ci,union as Hc,Union as jc,unionLayoutDiscriminator as $c,utf8 as Jc}from"@solana/buffer-layout";var It=ei,Kn=ri;var Qt=ci;var Cn=ui,J=ai;var Bt=si;var Rn=ti;var pe=oi;var Ln=ii;var M=Jo;var Zt=$o,On=ni;var Ke=class extends It{constructor(n,o,a){super(n,a);this.blob=M(n),this.signed=o}decode(n,o=0){let a=new Nn(this.blob.decode(n,o),10,"le");return this.signed?a.fromTwos(this.span*8).clone():a}encode(n,o,a=0){return typeof n=="number"&&(n=new Nn(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),o,a)}},St=class extends It{constructor(n){super(8,n);this._lower=Zt(Bt(),!1),this._upper=Zt(Bt(),!1)}addBoolean(n){this._lower.fields.length<32?this._lower.addBoolean(n):this._upper.addBoolean(n)}decode(n,o=0){let a=this._lower.decode(n,o),l=this._upper.decode(n,o+this._lower.span);return L(L({},a),l)}encode(n,o,a=0){return this._lower.encode(n,o,a)+this._upper.encode(n,o,a+this._lower.span)}};function d(i){return new Qt(1,i)}function X(i){return new Qt(4,i)}function t(i){return new Ke(8,!1,i)}function N(i){return new Ke(16,!1,i)}function Fn(i){return new Ke(1,!0,i)}function Ge(i){return new Ke(8,!0,i)}function vn(i){return new Ke(16,!0,i)}var at=class extends It{constructor(n,o,a,l){super(n.span,l);this.layout=n,this.decoder=o,this.encoder=a}decode(n,o){return this.decoder(this.layout.decode(n,o))}encode(n,o,a){return this.layout.encode(this.encoder(n),o,a)}getSpan(n,o){return this.layout.getSpan(n,o)}};function r(i){return new at(M(32),e=>new li(e),e=>e.toBuffer(),i)}function le(i){return new at(Cn(),mi,di,i)}function mi(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function di(i){return i?1:0}function Vn(i,e){let n=Bt("length"),o=p([n,b(i,On(n,-n.span),"values")]);return new at(o,({values:a})=>a,a=>({values:a}),e)}var Ht=class extends Kn{decode(e,n){return super.decode(e,n)}};function p(i,e,n){return new Ht(i,e,n)}function b(i,e,n){let o,a=typeof e=="number"?e:Mn(e)?e.toNumber():new Proxy(e,{get(l,m){if(!o){let s=Reflect.get(l,"count");o=Mn(s)?s.toNumber():s,Reflect.set(l,"count",o)}return Reflect.get(l,m)},set(l,m,s){return m==="count"&&(o=s),Reflect.set(l,m,s)}});return Ln(i,a,n)}var xt=p([r("mint"),r("owner"),t("amount"),X("delegateOption"),r("delegate"),d("state"),X("isNativeOption"),t("isNative"),t("delegatedAmount"),X("closeAuthorityOption"),r("closeAuthority")]);import{PublicKey as xg,SystemProgram as Kg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Rg}from"@solana/spl-token";import{PublicKey as dm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as fm}from"@solana/spl-token";import{PublicKey as k}from"@solana/web3.js";var En=new k("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Dn=new k("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Wn=new k("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),jt=new k("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Pm=new k("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),fi=new k("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),qn=new k("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Un=new k("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Am=new k("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),yi=new k("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Gn=new k("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),bi=new k("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),gi=new k("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),zn=new k("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),wm=new k("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Pi=new k("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Ai=new k("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),wi=new k("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),ki=new k("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Ti=new k("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),$t=new k("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),hi=new k("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),km=new k("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ii=new k("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Bi=new k("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Si=new k("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Tm=new k("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),hm=new k("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Im=new k("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Bm=new k("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Sm=new k("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX"),st={IDO_PROGRAM_ID_V1:Ai,IDO_PROGRAM_ID_V2:wi,IDO_PROGRAM_ID_V3:ki,IDO_PROGRAM_ID_V4:Ti};var he={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 Dg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as iy,TOKEN_2022_PROGRAM_ID as ry,TOKEN_PROGRAM_ID as ay}from"@solana/spl-token";import{PublicKey as uy}from"@solana/web3.js";import ly from"bn.js";import dy from"decimal.js";import{TOKEN_PROGRAM_ID as Dm}from"@solana/spl-token";import{PublicKey as Gm}from"@solana/web3.js";var xi=p([X("mintAuthorityOption"),r("mintAuthority"),t("supply"),d("decimals"),d("isInitialized"),X("freezeAuthorityOption"),r("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 D from"bn.js";var Z=new D(1).shln(64);var Ki=new D(1).shln(128),Jt=new D(1).shln(64).subn(1),Ci=new D(1).shln(128).subn(1),Ce=-443636,Re=443636,Le=new D("4295048016"),Oe=new D("79226673521066979257578248091"),Yn=new D("59543866431248"),Xn=new D("184467440737095516"),Qn=new D("15793534762490258745"),Zn=16,Ct=512,se=60,nd=new D("18446743708227953217"),Hn=[{bit:0,factor:new D("fffcb933bd6fb800",16)},{bit:1,factor:new D("fff97272373d4000",16)},{bit:2,factor:new D("fff2e50f5f657000",16)},{bit:3,factor:new D("ffe5caca7e10f000",16)},{bit:4,factor:new D("ffcb9843d60f7000",16)},{bit:5,factor:new D("ff973b41fa98e800",16)},{bit:6,factor:new D("ff2ea16466c9b000",16)},{bit:7,factor:new D("fe5dee046a9a3800",16)},{bit:8,factor:new D("fcbe86c7900bb000",16)},{bit:9,factor:new D("f987a7253ac65800",16)},{bit:10,factor:new D("f3392b0822bb6000",16)},{bit:11,factor:new D("e7159475a2caf000",16)},{bit:12,factor:new D("d097f3bdfd2f2000",16)},{bit:13,factor:new D("a9f746462d9f8000",16)},{bit:14,factor:new D("70d869a156f31c00",16)},{bit:15,factor:new D("31be135f97ed3200",16)},{bit:16,factor:new D("9aa508b5b85a500",16)},{bit:17,factor:new D("5d6af8dedc582c",16)},{bit:18,factor:new D("2216e584f5fa",16)}];var ut=3,jn=100;var $n=10,Jn=100,Ye=14;var q=new D(0),Ne=new D(1),od=new D(-1);var id=new D("18446744073700000000");var Ri=p([M(8),d("bump"),J("index"),r("owner"),X("protocolFeeRate"),X("tradeFeeRate"),J("tickSpacing"),X("fundFeeRate"),b(X(),1),r("fundOwner"),b(t(),3)]),Li=p([X("blockTimestamp"),Ge("tickCumulative"),b(t(),4)]),eo=p([M(8),le("initialized"),t("recentEpoch"),J("observationIndex"),r("poolId"),b(Li,jn,"observations"),b(t(),4)]),Oi=p([J("filterPeriod"),J("decayPeriod"),J("reductionFactor"),X("dynamicFeeControl"),X("maxVolatilityAccumulator"),pe("tickSpacingIndexReference"),X("volatilityReference"),X("volatilityAccumulator"),t("lastUpdateTimestamp"),b(d(),46)]),Ni=p([d("state"),t("openTime"),t("endTime"),t("lastUpdateTime"),N("emissionsPerSecondX64"),t("totalEmissioned"),t("claimed"),r("mint"),r("vault"),r("creator"),N("growthGlobalX64")]),en=p([M(8),d("bump"),r("configId"),r("creator"),r("mintA"),r("mintB"),r("vaultA"),r("vaultB"),r("observationId"),d("mintDecimalsA"),d("mintDecimalsB"),J("tickSpacing"),N("liquidity"),N("sqrtPriceX64"),pe("tickCurrent"),X(),N("feeGrowthGlobalX64A"),N("feeGrowthGlobalX64B"),t("protocolFeesTokenA"),t("protocolFeesTokenB"),b(N(),4),d("status"),d("feeOn"),M(6),b(Ni,ut,"rewardInfos"),M(8*16,"tickArrayBitmap"),b(t(),4),t("fundFeesTokenA"),t("fundFeesTokenB"),t("startTime"),t("recentEpoch"),Oi.replicate("dynamicFeeInfo"),b(t(),46)]),Mi=p([N("growthInsideLastX64"),t("rewardAmountOwed")]),Fi=p([M(8),d("bump"),r("nftMint"),r("poolId"),pe("tickLower"),pe("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),b(Mi,ut,"rewardInfos"),t("recentEpoch"),b(t(),7)]),ud=p([M(8),d("bump"),r("poolId"),pe("tickLower"),pe("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),b(N(),ut,"rewardGrowthInside"),t("recentEpoch"),b(t(),7)]),vi=p([pe("tick"),vn("liquidityNet"),N("liquidityGross"),N("feeGrowthOutsideX64A"),N("feeGrowthOutsideX64B"),b(N(),ut,"rewardGrowthsOutsideX64"),t("orderPhase"),t("ordersAmount"),t("partFilledOrdersRemaining"),N("unfilledRatioX64"),b(X(),3)]),tn=p([M(8),r("poolId"),pe("startTickIndex"),b(vi,se,"ticks"),d("initializedTickCount"),t("recentEpoch"),b(d(),107)]),Vi=p([M(8),d("bump"),b(r(),$n,"operationOwners"),b(r(),Jn,"whitelistMints")]),_i=p([M(8),r("poolId"),r("owner"),pe("tick"),le("zeroForOne"),t("orderPhase"),t("totalAmount"),t("filledAmount"),t("settleBase"),t("settleOutput"),t("openTime"),N("unfilledRatioX64"),b(t(),4)]),nn=p([M(8),r("poolId"),M(8*8*Ye,"positiveTickArrayBitmap"),M(8*8*Ye,"negativeTickArrayBitmap")]),cd=p([M(8),J("index"),J("filterPeriod"),J("decayPeriod"),J("reductionFactor"),X("dynamicFeeControl"),X("maxVolatilityAccumulator"),b(t(),8)]),Ei=p([M(8),r("wallet"),d("nonceIndex"),t("orderNonce"),b(t(),4)]),ld=p([t(),d("bump"),r("owner"),r("poolId"),r("positionId"),r("nftAccount"),b(t(),8)]),Di=p([M(8),d("bump"),r("lockOwner"),r("poolId"),r("positionId"),r("nftAccount"),r("lockNftMint"),t("recentEpoch"),b(t(),8)]);import pd from"bn.js";function to(i){let e=Buffer.alloc(4);return e.writeInt32BE(i),e}var hd=Buffer.from("amm_config","utf8"),Wi=Buffer.from("pool","utf8"),qi=Buffer.from("pool_vault","utf8"),Id=Buffer.from("pool_reward_vault","utf8"),Bd=Buffer.from("position","utf8"),Ui=Buffer.from("tick_array","utf8"),Sd=Buffer.from("operation","utf8"),Gi=Buffer.from("pool_tick_array_bitmap_extension","utf8"),xd=Buffer.from("observation","utf8"),Kd=Buffer.from("support_mint","utf8"),Cd=Buffer.from("dynamic_fee_config","utf8");function ct(i,e,n){return ce([Ui,e.toBuffer(),to(n)],i)}function Xe(i,e){return ce([Gi,e.toBuffer()],i)}var Rd=Buffer.from("locked_position","utf8");import{sha256 as rr}from"js-sha256";import zi from"bn.js";import Md from"decimal.js";function me(i,e,n){if(n.isZero())throw new Error("Division by zero");return i.mul(e).div(n)}function de(i,e,n){if(n.isZero())throw new Error("Division by zero");let o=i.mul(e),a=o.div(n);return o.mod(n).isZero()?a:a.addn(1)}var vd=new zi(1).shln(256).subn(1);function no(i){return i.isZero()?-1:i.bitLength()-1}import Ed from"bn.js";import Xd from"bn.js";import Zd from"decimal.js";import{PublicKey as Lp}from"@solana/web3.js";import Np from"bn.js";import{TOKEN_2022_PROGRAM_ID as Wp}from"@solana/spl-token";import zp from"decimal.js";import wp from"bn.js";import sp from"bn.js";import ef from"bn.js";function te(i){let e=`global:${i}`;return Buffer.from(rr.digest(e)).slice(0,8)}eo.span;var Yf=E("Raydium_Clmm"),Xf={createPool:te("create_pool"),createCustomizablePool:te("create_customizable_pool"),openPositionV2:te("open_position_v2"),openPositionWithToken22Nft:te("open_position_with_token22_nft"),closePosition:te("close_position"),increaseLiquidityV2:te("increase_liquidity_v2"),decreaseLiquidityV2:te("decrease_liquidity_v2"),initializeReward:te("initialize_reward"),setRewardParams:te("set_reward_params"),updateRewardInfos:te("update_reward_infos"),collectRemain