@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
1 lines • 88.5 kB
JavaScript
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 ge=(s,e)=>{var t={};for(var o in s)wn.call(s,o)&&e.indexOf(o)<0&&(t[o]=s[o]);if(s!=null&>)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 y=u.map(A=>{let w=s._buildArgs([A.map(h=>h.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:w}}),d=qt(y,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(y=>s.getMultipleAccountsInfo(y,i)))}catch(y){y instanceof Error&&Wt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${y.message}`)}return c.flat()}import Ve from"bn.js";import eR from"decimal.js";import Qo from"big.js";import ys from"bn.js";import Wo from"toformat";var qo=Wo,tt=qo;import At from"big.js";import Go from"bn.js";import zo from"decimal.js-light";import nt from"bn.js";var In=9007199254740991;function ue(s){let e=D("Raydium_parseBigNumberish");if(s instanceof nt)return s;if(typeof s=="string"){if(s.match(/^-?[0-9]+$/))return new nt(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 nt(String(s))):typeof s=="bigint"?new nt(s.toString()):(e.error(`invalid BigNumberish value: ${s}`),new nt(0))}var Pt=D("module/fraction"),Ut=tt(At),ot=tt(zo),Yo={[0]:ot.ROUND_DOWN,[1]:ot.ROUND_HALF_UP,[2]:ot.ROUND_UP},Xo={[0]:At.roundDown,[1]:At.roundHalfUp,[2]:At.roundUp},z=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 z(this.denominator,this.numerator)}add(e){let t=e instanceof z?e:new z(ue(e));return this.denominator.eq(t.denominator)?new z(this.numerator.add(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof z?e:new z(ue(e));return this.denominator.eq(t.denominator)?new z(this.numerator.sub(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof z?e:new z(ue(e));return new z(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof z?e:new z(ue(e));return new z(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.`),ot.set({precision:e+1,rounding:Yo[o]});let i=new ot(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=Xo[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=tt(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"}},Ae={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 Q,SystemProgram as Sn,SYSVAR_RENT_PUBKEY as jo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $o}from"@solana/spl-token";function Ee({pubkey:s,isSigner:e=!1,isWritable:t=!0}){return{pubkey:s,isWritable:t,isSigner:e}}var Jo=[Ee({pubkey:$o,isWritable:!1}),Ee({pubkey:Sn.programId,isWritable:!1}),Ee({pubkey:jo,isWritable:!1})];function xn({publicKey:s,transformSol:e}){let t=Kn(s.toString());if(t instanceof Q)return e&&t.equals(Le)?Pe:t;if(e&&t.toString()===Le.toBase58())return Pe;if(typeof t=="string"){if(t===Q.default.toBase58())return Q.default;try{return new Q(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Kn(s){try{return new Q(s)}catch{return s}}var Gt=new Q("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),De=new Q("SysvarRent111111111111111111111111111111111"),ei=new Q("SysvarC1ock11111111111111111111111111111111"),kt=new Q("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),ti=new Q("Sysvar1nstructions1111111111111111111111111"),Cn=Sn.programId,Ns=new Q("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ms=new Q("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Fs=new Q("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),vs=new Q("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Vs=new Q("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),_s=new Q("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Es=new Q("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ds=new Q("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ws=new Q("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),qs=new Q("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Us=new Q("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Pe=new Q("So11111111111111111111111111111111111111112"),Le=Q.default;var Yt=class{constructor({mint:e,decimals:t,symbol:o,name:i,skipMint:r=!1,isToken2022:u=!1}){if(e===Le.toBase58()||e instanceof zt&&Le.equals(e)){this.decimals=Ae.decimals,this.symbol=Ae.symbol,this.name=Ae.name,this.mint=new zt(Ae.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=Yt;re.WSOL=new Yt(E(L({},Ae),{mint:Ae.address}));var Xt=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=Xt;Tt.SOL=new Xt(wt);import ni from"bn.js";var tu=new z(new ni(100));var su=D("Raydium_price");import{merge as eC}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 ze,sendAndConfirmTransaction as Jt,SystemProgram as ci,Transaction as at,TransactionMessage as st,VersionedTransaction as ut}from"@solana/web3.js";import li from"axios";import{PublicKey as Qt,AddressLookupTableAccount as Ue}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 y=new Ue({key:c,state:Ue.deserialize(u.data)});i[c.toString()]=y,t==="devnet"?qe[c.toString()]=y:We[c.toString()]=y}return i}var We={},Ht=async s=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(We[e])return We;let t=new Qt(e),o=await s.getAccountInfo(t);return o&&(We[e]=new Ue({key:t,state:Ue.deserialize(o.data)})),We},qe={},jt=async s=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(qe[e])return qe;let t=new Qt(e),o=await s.getAccountInfo(t);return o&&(qe[e]=new Ue({key:t,state:Ue.deserialize(o.data)})),qe};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 Ge(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 we(s,e){let[t,o]=ii.findProgramAddressSync(s,e);return{publicKey:t,nonce:o}}function it({instructions:s,payer:e,signers:t}){return $t(s,[e,...t])}function rt({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 Oe(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 ze(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!==ze.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 at;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 b;let{recentBlockHash:r,skipPreflight:u=!0,sendAndConfirm:c,notSendToRpc:y}=i||{},d=r!=null?r:await Ge(this.connection,this.blockhashCommitment);if(t.recentBlockhash=d,this.signers.length&&t.sign(...this.signers),Oe([t]),(b=this.owner)!=null&&b.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:y?"":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(b=>b.transaction.instructions.length>0),u=[i,...r.map(b=>b.transaction)],c=[this.signers,...r.map(b=>b.signers)],y=[...this.instructionTypes,...r.map(b=>b.instructionTypes).flat()];return(d=this.owner)!=null&&d.signer&&c.forEach(b=>{b.some(A=>A.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:u,signers:c,instructionTypes:y,execute:async b=>{var x;let{sequentially:A,onTxUpdate:w,skipTxCount:h=0,recentBlockHash:O,skipPreflight:T=!0}=b||{},I=O!=null?O:await Ge(this.connection,this.blockhashCommitment);if((x=this.owner)!=null&&x.isKeyPair){if(A){let K=[],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});K.push(P)}return{txIds:K,signedTxs:u}}return{txIds:await await Promise.all(u.map(async K=>(K.recentBlockhash=I,await this.connection.sendRawTransaction(K.serialize(),{skipPreflight:T})))),signedTxs:u}}if(this.signAllTransactions){let K=u.map((V,P)=>(V.recentBlockhash=I,c[P].length&&V.sign(...c[P]),V));Oe(K);let v=await this.signAllTransactions(K);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=G=>{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=G.err?"error":"success"}w==null||w([...P]),G.err||B()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var G;if(R){clearInterval(N);return}try{let q=await this.connection.getTransaction(S,{commitment:"confirmed",maxSupportedTransactionVersion:0});q&&(R=!0,clearInterval(N),le({err:((G=q.meta)==null?void 0:G.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,G=>{if(R){this.connection.removeSignatureListener(_);return}R=!0,le(G)},"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=ge(O,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),c=L(L({},this.cluster==="devnet"?await jt(this.connection):await Ht(this.connection)),t),y=Array.from(new Set([...o,...this.lookupTableAddress])),d=[];for(let I of y)c[I]===void 0&&d.push(new ze(I));let b=await Zt({connection:this.connection,address:d});for(let[I,x]of Object.entries(b))c[I]=x;let A=i?ze.default.toBase58():r!=null?r:await Ge(this.connection,this.blockhashCommitment),w=new st({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 ut(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:K,notSendToRpc:v}=I||{};if(Oe([h]),(V=this.owner)!=null&&V.isKeyPair){let P=await this.connection.sendTransaction(h,{skipPreflight:x});return K&&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(b=>b.builder.instructions.length>0),u=[i,...r.map(b=>b.transaction)],c=[this.signers,...r.map(b=>b.signers)],y=[...this.instructionTypes,...r.map(b=>b.instructionTypes).flat()];return(d=this.owner)!=null&&d.signer&&c.forEach(b=>{b.some(A=>A.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),u.forEach(async(b,A)=>{b.sign(c[A])}),{builder:this,transactions:u,signers:c,instructionTypes:y,buildProps:o,execute:async b=>{var T;let{sequentially:A,onTxUpdate:w,recentBlockHash:h,skipPreflight:O=!0}=b||{};if(h&&u.forEach(I=>I.message.recentBlockhash=h),Oe(u),(T=this.owner)!=null&&T.isKeyPair){if(A){let I=[];for(let x of u){let K=await this.connection.sendTransaction(x,{skipPreflight:O});await It(this.connection,K),I.push(K)}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,K=[],v=async()=>{if(!I[x])return;let V=await this.connection.sendTransaction(I[x],{skipPreflight:O});K.push({txId:V,status:"sent",signedTx:I[x]}),w==null||w([...K]),x++;let P=!1,B=null,S=null,R=N=>{B!==null&&clearInterval(B),S!==null&&this.connection.removeSignatureListener(S);let _=K.findIndex(le=>le.txId===V);if(_>-1){if(K[_].status==="error"||K[_].status==="success")return;K[_].status=N.err?"error":"success"}w==null||w([...K]),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 K=0;K<I.length;K+=1){let v=await this.connection.sendTransaction(I[K],{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=ge(A,["splitIns","computeBudgetConfig"]),r=o?ht(o):{instructions:[],instructionTypes:[]},u=this.signers.reduce((h,O)=>E(L({},h),{[O.publicKey.toBase58()]:O}),{}),c=[],y=[],d=[],b=0;if(this.allInstructions.forEach(h=>{let O=[...d,h],T=o?[...r.instructions,...O]:O,x=[...new Set(O.map(K=>K.keys.filter(v=>v.isSigner).map(v=>v.pubkey.toString())).flat()).values()].map(K=>new ze(K));if(h!==t[b]&&d.length<12&&(it({instructions:T,payer:this.feePayer,signers:x})||it({instructions:O,payer:this.feePayer,signers:x})))d.push(h);else{if(d.length===0)throw Error("item ins too big");b+=h===t[b]?1:0,it({instructions:o?[...r.instructions,...d]:[...d],payer:this.feePayer,signers:x})?c.push(new at().add(...r.instructions,...d)):c.push(new at().add(...d)),y.push(Array.from(new Set(d.map(K=>K.keys.filter(v=>v.isSigner).map(v=>v.pubkey.toString())).flat())).map(K=>u[K]).filter(K=>K!==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);it({instructions:o?[...r.instructions,...d]:[...d],payer:this.feePayer,signers:O.map(T=>T.publicKey)})?c.push(new at().add(...r.instructions,...d)):c.push(new at().add(...d)),y.push(O)}return c.forEach(h=>h.feePayer=this.feePayer),(w=this.owner)!=null&&w.signer&&y.forEach(h=>{h.some(O=>O.publicKey.equals(this.owner.publicKey))||h.push(this.owner.signer)}),{builder:this,transactions:c,signers:y,instructionTypes:this.instructionTypes,execute:async h=>{var V;let{sequentially:O,onTxUpdate:T,skipTxCount:I=0,recentBlockHash:x,skipPreflight:K=!0}=h||{},v=x!=null?x:await Ge(this.connection,this.blockhashCommitment);if(c.forEach(async(P,B)=>{P.recentBlockhash=v,y[B].length&&P.sign(...y[B])}),Oe(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:K});B.push(R)}return{txIds:B,signedTxs:c}}return{txIds:await Promise.all(c.map(async P=>await this.connection.sendRawTransaction(P.serialize(),{skipPreflight:K}))),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:K});R.push({txId:_,status:"sent",signedTx:B[S]}),T==null||T([...R]),S++;let le=!1,G=null,q=null,oe=X=>{G!==null&&clearInterval(G),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=X.err?"error":"success"}T==null||T([...R]),X.err||N()};this.loopMultiTxStatus&&(G=setInterval(async()=>{var X;if(le){clearInterval(G);return}try{let se=await this.connection.getTransaction(_,{commitment:"confirmed",maxSupportedTransactionVersion:0});se&&(le=!0,clearInterval(G),oe({err:((X=se.meta)==null?void 0:X.err)||null}),console.log("tx status from getTransaction:",_))}catch(se){le=!0,clearInterval(G),console.error("getTransaction timeout:",se,_)}},Bt)),q=this.connection.onSignature(_,X=>{if(le){this.connection.removeSignatureListener(q);return}le=!0,oe(X)},"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:K});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=ge(v,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),y=L(L({},this.cluster==="devnet"?await jt(this.connection):await Ht(this.connection)),i),d=Array.from(new Set([...this.lookupTableAddress,...r])),b=[];for(let P of d)y[P]===void 0&&b.push(new ze(P));let A=await Zt({connection:this.connection,address:b});for(let[P,B]of Object.entries(A))y[P]=B;let w=t?ht(t):{instructions:[],instructionTypes:[]},h=await Ge(this.connection,this.blockhashCommitment),O=this.signers.reduce((P,B)=>E(L({},P),{[B.publicKey.toBase58()]:B}),{}),T=[],I=[],x=[],K=0;if(this.allInstructions.forEach(P=>{let B=[...x,P],S=t?[...w.instructions,...B]:B;if(P!==o[K]&&x.length<u&&(rt({instructions:S,payer:this.feePayer,lookupTableAddressAccount:y})||rt({instructions:B,payer:this.feePayer,lookupTableAddressAccount:y})))x.push(P);else{if(x.length===0)throw Error("item ins too big");K+=P===o[K]?1:0;let R={};for(let N of[...new Set(d)])y[N]!==void 0&&(R[N]=y[N]);if(t&&rt({instructions:[...w.instructions,...x],payer:this.feePayer,lookupTableAddressAccount:y,recentBlockhash:h})){let N=new st({payerKey:this.feePayer,recentBlockhash:h,instructions:[...w.instructions,...x]}).compileToV0Message(Object.values(y));T.push(new ut(N))}else{let N=new st({payerKey:this.feePayer,recentBlockhash:h,instructions:[...x]}).compileToV0Message(Object.values(y));T.push(new ut(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&&rt({instructions:[...w.instructions,...x],payer:this.feePayer,lookupTableAddressAccount:y,recentBlockhash:h})){let S=new st({payerKey:this.feePayer,recentBlockhash:h,instructions:[...w.instructions,...x]}).compileToV0Message(Object.values(y));T.push(new ut(S))}else{let S=new st({payerKey:this.feePayer,recentBlockhash:h,instructions:[...x]}).compileToV0Message(Object.values(y));T.push(new ut(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(G,q)=>{I[q].length&&G.sign(I[q]),N&&(G.message.recentBlockhash=N)}),Oe(T),(le=this.owner)!=null&&le.isKeyPair){if(B){let G=0,q=[];for(let oe of T){if(++G,G<=R){console.log("skip tx: ",G),q.push("tx skipped");continue}let X=await this.connection.sendTransaction(oe,{skipPreflight:_});await It(this.connection,X),q.push(X)}return{txIds:q,signedTxs:T}}return{txIds:await Promise.all(T.map(async G=>await this.connection.sendTransaction(G,{skipPreflight:_}))),signedTxs:T}}if(this.signAllTransactions){let G=await this.signAllTransactions(T.slice(R,T.length)),q=[...T.slice(0,R),...G];if(B){let oe=0,X=[],se=async()=>{if(!q[oe])return;if(oe<R){X.push({txId:"",status:"success",signedTx:q[oe]}),S==null||S([...X]),oe++,se();return}let Te=await this.connection.sendTransaction(q[oe],{skipPreflight:_});X.push({txId:Te,status:"sent",signedTx:q[oe]}),S==null||S([...X]),oe++;let Je=!1,_e=null,bt=null,Pn=Re=>{_e!==null&&clearInterval(_e),bt!==null&&this.connection.removeSignatureListener(bt);let he=X.findIndex(Mo=>Mo.txId===Te);if(he>-1){if(X[he].status==="error"||X[he].status==="success")return;X[he].status=Re.err?"error":"success"}S==null||S([...X]),Re.err||se()};this.loopMultiTxStatus&&(_e=setInterval(async()=>{var Re;if(Je){clearInterval(_e);return}try{let he=await this.connection.getTransaction(Te,{commitment:"confirmed",maxSupportedTransactionVersion:0});he&&(Je=!0,clearInterval(_e),Pn({err:((Re=he.meta)==null?void 0:Re.err)||null}),console.log("tx status from getTransaction:",Te))}catch(he){Je=!0,clearInterval(_e),console.error("getTransaction timeout:",he,Te)}},Bt)),bt=this.connection.onSignature(Te,Re=>{if(Je){this.connection.removeSignatureListener(bt);return}Je=!0,Pn(Re)},"confirmed"),this.connection.getSignatureStatus(Te)};return se(),{txIds:[],signedTxs:q}}else{let oe=[];for(let X=0;X<q.length;X+=1){let se=await this.connection.sendTransaction(q[X],{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 Yl}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 Yc,s8 as Xc,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 ye=bi;var Dn=gi;var F=di;var nn=mi,Wn=yi;var Me=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 Z(s){return new tn(4,s)}function n(s){return new Me(8,!1,s)}function M(s){return new Me(16,!1,s)}function Gn(s){return new Me(1,!0,s)}function Ye(s){return new Me(8,!0,s)}function zn(s){return new Me(16,!0,s)}var ct=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 ct(F(32),e=>new hi(e),e=>e.toBuffer(),s)}function de(s){return new ct(_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 Yn(s,e){let t=Kt("length"),o=f([t,g(s,Wn(t,-t.span),"values")]);return new ct(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"),Z("delegateOption"),a("delegate"),p("state"),Z("isNativeOption"),n("isNative"),n("delegatedAmount"),Z("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"),lt={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 Xm}from"@solana/spl-token";import{PublicKey as jm}from"@solana/web3.js";var Di=f([Z("mintAuthorityOption"),a("mintAuthority"),n("supply"),p("decimals"),p("isInitialized"),Z("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 U=new W(1).shln(64),Qe=64,Wi=new W(1).shln(128),mt=new W(1).shln(64).subn(1),qi=new W(1).shln(128).subn(1),Be=-443636,Se=443636,Fe=new W("4295048016"),ve=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,dt=1e4,ao=1e4,so=1e5;var pt=3,uo=100;var co=10,lo=100,Nt=14;var C=new W(0),pe=new W(1),ld=new W(-1);var md=new W("18446744073700000000");var Ui=f([F(8),p("bump"),ne("index"),a("owner"),Z("protocolFeeRate"),Z("tradeFeeRate"),ne("tickSpacing"),Z("fundFeeRate"),g(Z(),1),a("fundOwner"),g(n(),3)]),Gi=f([Z("blockTimestamp"),Ye("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"),Z("dynamicFeeControl"),Z("maxVolatilityAccumulator"),ye("tickSpacingIndexReference"),Z("volatilityReference"),Z("volatilityAccumulator"),n("lastUpdateTimestamp"),g(p(),46)]),Yi=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"),ye("tickCurrent"),Z(),M("feeGrowthGlobalX64A"),M("feeGrowthGlobalX64B"),n("protocolFeesTokenA"),n("protocolFeesTokenB"),g(M(),4),p("status"),p("feeOn"),F(6),g(Yi,pt,"rewardInfos"),F(8*16,"tickArrayBitmap"),g(n(),4),n("fundFeesTokenA"),n("fundFeesTokenB"),n("startTime"),n("recentEpoch"),zi.replicate("dynamicFeeInfo"),g(n(),46)]),Xi=f([M("growthInsideLastX64"),n("rewardAmountOwed")]),Qi=f([F(8),p("bump"),a("nftMint"),a("poolId"),ye("tickLower"),ye("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),g(Xi,pt,"rewardInfos"),n("recentEpoch"),g(n(),7)]),yd=f([F(8),p("bump"),a("poolId"),ye("tickLower"),ye("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),g(M(),pt,"rewardGrowthInside"),n("recentEpoch"),g(n(),7)]),Zi=f([ye("tick"),zn("liquidityNet"),M("liquidityGross"),M("feeGrowthOutsideX64A"),M("feeGrowthOutsideX64B"),g(M(),pt,"rewardGrowthsOutsideX64"),n("orderPhase"),n("ordersAmount"),n("partFilledOrdersRemaining"),M("unfilledRatioX64"),g(Z(),3)]),po=f([F(8),a("poolId"),ye("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"),ye("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"),Z("dynamicFeeControl"),Z("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 H(s,e,t){if(t.isZero())throw new Error("Division by zero");return s.mul(e).div(t)}function Y(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()?C:pe)}var Yd=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 Ze from"decimal.js";var j=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=U.clone();for(let{bit:i,factor:r}of ro)(t&1<<i)!==0&&(o=H(o,r,U));return e>0&&(o=H(U,U,o)),o}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:o}){if(o){let i=j.getPriceAtTick(t,!1);return H(e,i,U)}else{let i=j.getPriceAtTick(t,!0);return H(e,U,i)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:o}){if(o){let i=j.getPriceAtTick(t,!0);return