UNPKG

@sega-so/sega-sdk

Version:

An SDK for building applications on top of SEGA.

2 lines 25.6 kB
var st=Object.defineProperty,at=Object.defineProperties;var ut=Object.getOwnPropertyDescriptors;var Ae=Object.getOwnPropertySymbols;var ct=Object.prototype.hasOwnProperty,lt=Object.prototype.propertyIsEnumerable;var F=Math.pow,Ie=(n,e,t)=>e in n?st(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,W=(n,e)=>{for(var t in e||(e={}))ct.call(e,t)&&Ie(n,t,e[t]);if(Ae)for(var t of Ae(e))lt.call(e,t)&&Ie(n,t,e[t]);return n},O=(n,e)=>at(n,ut(e));var M=(n,e,t)=>new Promise((r,s)=>{var a=c=>{try{o(t.next(c))}catch(u){s(u)}},i=c=>{try{o(t.throw(c))}catch(u){s(u)}},o=c=>c.done?r(c.value):Promise.resolve(c.value).then(a,i);o((t=t.apply(n,e)).next())});import{PublicKey as ht}from"@solana/web3.js";import Me,{isBN as _e}from"bn.js";import{bits as cn,BitStructure as ln,blob as mt,Blob as mn,cstr as pn,f32 as fn,f32be as dn,f64 as gn,f64be as bn,greedy as yn,Layout as pt,ns64 as hn,ns64be as Pn,nu64 as Tn,nu64be as xn,offset as wn,s16 as Sn,s16be as kn,s24 as Bn,s24be as An,s32 as In,s32be as Ln,s40 as Cn,s40be as Kn,s48 as Nn,s48be as Wn,s8 as Mn,seq as ft,struct as _n,Structure as dt,u16 as gt,u16be as Rn,u24 as Dn,u24be as En,u32 as Fn,u32be as On,u40 as Vn,u40be as vn,u48 as Un,u48be as qn,u8 as bt,UInt as yt,union as Gn,Union as jn,unionLayoutDiscriminator as zn,utf8 as Hn}from"@solana/buffer-layout";var ue=pt,Le=dt;var Ce=yt;var Ke=bt,Ne=gt;var We=ft;var V=mt;var ce=class extends ue{constructor(e,t,r){super(e,r),this.blob=V(e),this.signed=t}decode(e,t=0){let r=new Me(this.blob.decode(e,t),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(e,t,r=0){return typeof e=="number"&&(e=new Me(e)),this.signed&&(e=e.toTwos(this.span*8)),this.blob.encode(e.toArrayLike(Buffer,"le",this.span),t,r)}};function _(n){return new Ce(1,n)}function l(n){return new ce(8,!1,n)}var J=class extends ue{constructor(e,t,r,s){super(e.span,s),this.layout=e,this.decoder=t,this.encoder=r}decode(e,t){return this.decoder(this.layout.decode(e,t))}encode(e,t,r){return this.layout.encode(this.encoder(e),t,r)}getSpan(e,t){return this.layout.getSpan(e,t)}};function w(n){return new J(V(32),e=>new ht(e),e=>e.toBuffer(),n)}function X(n){return new J(Ke(),Pt,Tt,n)}function Pt(n){if(n===0)return!1;if(n===1)return!0;throw new Error("Invalid bool: "+n)}function Tt(n){return n?1:0}var le=class extends Le{decode(e,t){return super.decode(e,t)}};function S(n,e,t){return new le(n,e,t)}function me(n,e,t){let r,s=typeof e=="number"?e:_e(e)?e.toNumber():new Proxy(e,{get(a,i){if(!r){let o=Reflect.get(a,"count");r=_e(o)?o.toNumber():o,Reflect.set(a,"count",r)}return Reflect.get(a,i)},set(a,i,o){return i==="count"&&(r=o),Reflect.set(a,i,o)}});return We(n,s,t)}var cr=S([V(8),_("bump"),X("disableCreatePool"),Ne("index"),l("tradeFeeRate"),l("protocolFeeRate"),l("fundFeeRate"),l("createPoolFee"),w("protocolOwner"),w("fundOwner"),me(l(),16)]),lr=S([V(8),w("configId"),w("poolCreator"),w("vaultA"),w("vaultB"),w("mintLp"),w("mintA"),w("mintB"),w("mintProgramA"),w("mintProgramB"),w("observationId"),_("bump"),_("status"),_("lpDecimals"),_("mintDecimalA"),_("mintDecimalB"),l("lpAmount"),l("protocolFeesMintA"),l("protocolFeesMintB"),l("fundFeesMintA"),l("fundFeesMintB"),l("openTime"),me(l(),32)]);import{PublicKey as Y,TransactionInstruction as D,Keypair as en,SystemProgram as tn}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Qe,TOKEN_2022_PROGRAM_ID as we,TOKEN_PROGRAM_ID as N}from"@solana/spl-token";import{PublicKey as hr}from"@solana/web3.js";import{get as Re,set as xt}from"lodash";var pe=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(r=>typeof r=="object"?JSON.stringify(r):r).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}},De={},wt={};function x(n){let e=Re(De,n);if(!e){let t=Re(wt,n);e=new pe({name:n,logLevel:t}),xt(De,n,e)}return e}import{MINT_SIZE as wr,TOKEN_PROGRAM_ID as Sr,getTransferFeeConfig as kr,unpackMint as Br}from"@solana/spl-token";var Ar=x("Sega_accountInfo_util");import L from"bn.js";import Po from"decimal.js";import Kt from"big.js";import zr from"bn.js";import St from"toformat";var kt=St,U=kt;import Q from"big.js";import At from"bn.js";import It from"decimal.js-light";import q from"bn.js";var Ee=9007199254740991;function A(n){let e=x("Sega_parseBigNumberish");if(n instanceof q)return n;if(typeof n=="string"){if(n.match(/^-?[0-9]+$/))return new q(n);e.logWithError(`invalid BigNumberish string: ${n}`)}return typeof n=="number"?(n%1&&e.logWithError(`BigNumberish number underflow: ${n}`),(n>=Ee||n<=-Ee)&&e.logWithError(`BigNumberish number overflow: ${n}`),new q(String(n))):typeof n=="bigint"?new q(n.toString()):(e.error(`invalid BigNumberish value: ${n}`),new q(0))}var $=x("module/fraction"),de=U(Q),G=U(It),Lt={0:G.ROUND_DOWN,1:G.ROUND_HALF_UP,2:G.ROUND_UP},Ct={0:Q.roundDown,1:Q.roundHalfUp,2:Q.roundUp},I=class n{constructor(e,t=new At(1)){this.numerator=A(e),this.denominator=A(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new n(this.denominator,this.numerator)}add(e){let t=e instanceof n?e:new n(A(e));return this.denominator.eq(t.denominator)?new n(this.numerator.add(t.numerator),this.denominator):new n(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof n?e:new n(A(e));return this.denominator.eq(t.denominator)?new n(this.numerator.sub(t.numerator),this.denominator):new n(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof n?e:new n(A(e));return new n(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof n?e:new n(A(e));return new n(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},r=1){Number.isInteger(e)||$.logWithError(`${e} is not an integer.`),e<=0&&$.logWithError(`${e} is not positive.`),G.set({precision:e+1,rounding:Lt[r]});let s=new G(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return s.toFormat(s.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},r=1){return Number.isInteger(e)||$.logWithError(`${e} is not an integer.`),e<0&&$.logWithError(`${e} is negative.`),de.DP=e,de.RM=Ct[r]||1,new de(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var ti=x("Sega_amount"),ni=U(Kt);import{PublicKey as Wt}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Fe}from"@solana/spl-token";var Oe={chainId:101,address:Wt.default.toBase58(),programId:Fe.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"sega",extensions:{coingeckoId:"solana"}},R={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Fe.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"sega",extensions:{coingeckoId:"solana"}};import{PublicKey as he}from"@solana/web3.js";import{PublicKey as p,SystemProgram as Ve,SYSVAR_RENT_PUBKEY as Mt}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as _t}from"@solana/spl-token";function ge({pubkey:n,isSigner:e=!1,isWritable:t=!0}){return{pubkey:n,isWritable:t,isSigner:e}}var li=[ge({pubkey:_t,isWritable:!1}),ge({pubkey:Ve.programId,isWritable:!1}),ge({pubkey:Mt,isWritable:!1})];function ve({publicKey:n,transformSol:e}){let t=Ue(n.toString());if(t instanceof p)return e&&t.equals(j)?fe:t;if(e&&t.toString()===j.toBase58())return fe;if(typeof t=="string"){if(t===p.default.toBase58())return p.default;try{return new p(t)}catch(r){throw new Error("invalid public key")}}throw new Error("invalid public key")}function Ue(n){try{return new p(n)}catch(e){return n}}var mi=new p("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),be=new p("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ye=new p("SysvarRent111111111111111111111111111111111"),pi=new p("SysvarC1ock11111111111111111111111111111111"),z=new p("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),fi=new p("Sysvar1nstructions1111111111111111111111111"),qe=Ve.programId,di=new p("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),gi=new p("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),bi=new p("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),yi=new p("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),hi=new p("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Pi=new p("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ti=new p("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),xi=new p("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),wi=new p("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Si=new p("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),ki=new p("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),fe=new p("So11111111111111111111111111111111111111112"),j=p.default;var ee=class ee{constructor({mint:e,decimals:t,symbol:r,name:s,skipMint:a=!1,isToken2022:i=!1}){if(e===j.toBase58()||e instanceof he&&j.equals(e)){this.decimals=R.decimals,this.symbol=R.symbol,this.name=R.name,this.mint=new he(R.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=r||e.toString().substring(0,6),this.name=s||e.toString().substring(0,6),this.mint=a?he.default:ve({publicKey:e}),this.isToken2022=i}equals(e){return this===e?!0:this.mint.equals(e.mint)}};ee.WSOL=new ee(O(W({},R),{mint:R.address}));var H=ee;var te=class te{constructor({decimals:e,symbol:t="UNKNOWN",name:r="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=r}equals(e){return this===e}};te.SOL=new te(Oe);var Pe=te;import Rt from"bn.js";var Ei=new I(new Rt(100));var qi=x("Sega_price");import{PublicKey as so}from"@solana/web3.js";import uo from"bn.js";var Dt=new L(0),Co=new L(1),Ko=new L(2),No=new L(3),Wo=new L(5),Nt=new L(10),Mo=new L(100),_o=new L(1e3),Ro=new L(1e4);import{PublicKey as Ft}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ot}from"@solana/spl-token";import{ComputeBudgetProgram as Go,Keypair as Ho,PublicKey as Et,Transaction as Zo,TransactionMessage as Xo,VersionedTransaction as $o}from"@solana/web3.js";var ne={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{TOKEN_PROGRAM_ID as ns}from"@solana/spl-token";var rs=x("Sega_txUtil");function k(n,e){let[t,r]=Et.findProgramAddressSync(n,e);return{publicKey:t,nonce:r}}function re(n,e,t){return k([n.toBuffer(),(t!=null?t:Ot).toBuffer(),e.toBuffer()],new Ft("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}function He(n){return k([Buffer.from("metadata","utf8"),z.toBuffer(),n.toBuffer()],z)}import{PublicKey as K}from"@solana/web3.js";var Ye=new K("SegazTQwbYWknDZkJ6j2Kgvm5gw3MrHGKtWstZdoNKZ"),Ze=new K("Ajk8d9bERSaFdeoT1d8JUVfaDayrYLnAdgeB47TFMUaG"),ps=new K("2HbjxVVKJ7Ct72Rcd8WK4VTqmwTXL5aAggkH1CHGFGmh"),Vt=new K("auetiVUVJkRxvNPLYEvVnz8UJSqQ1VgoA83PcicHVD1"),vt=new K("GzqQwxPSmUZnTyCfX9YWqi32MJg43ujP786ZoacL559Y"),Ut=new K("GzqQwxPSmUZnTyCfX9YWqi32MJg43ujP786ZoacL559Y");var fs={SERUM_MARKET:K.default,UTIL1216:K.default,CREATE_CPMM_POOL_PROGRAM:Vt,CREATE_CPMM_POOL_AUTH:vt,CREATE_CPMM_POOL_FEE_ACC:Ut};import Je from"bn.js";function Te(n,e){let{div:t,mod:r}=n.divmod(e);return r.gt(new Je(0))?t.add(new Je(1)):t}import{PublicKey as xs,AddressLookupTableAccount as ws}from"@solana/web3.js";import{PublicKey as Os,sendAndConfirmTransaction as Vs,SystemProgram as qs,Transaction as Gs,TransactionMessage as zs,VersionedTransaction as Hs}from"@solana/web3.js";import Zs from"axios";import{Connection as ra}from"@solana/web3.js";var qt=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Gt=Buffer.from("amm_config","utf8"),jt=Buffer.from("pool","utf8"),zt=Buffer.from("pool_lp_mint","utf8"),Ht=Buffer.from("pool_vault","utf8"),Yt=Buffer.from("observation","utf8");function Zt(n){return k([qt],n)}function Ba(n,e){return k([Gt,$t(e)],n)}function xe(n,e,t,r){return k([jt,e.toBuffer(),t.toBuffer(),r.toBuffer()],n)}function Jt(n,e){return k([zt,e.toBuffer()],n)}function Xe(n,e,t){return k([Ht,e.toBuffer(),t.toBuffer()],n)}function Xt(n,e){return k([Yt,e.toBuffer()],n)}function $t(n){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,n,!1),new Uint8Array(e)}function Aa({poolId:n,programId:e,configId:t,mintA:r,mintB:s}){let a=Zt(e).publicKey,i=n||xe(e,t,r,s).publicKey,o=Jt(e,i).publicKey,c=Xe(e,i,r).publicKey,u=Xe(e,i,s).publicKey,g=Xt(e,i).publicKey;return{poolId:i,configId:t,authority:a,lpMint:o,vaultA:c,vaultB:u,observationId:g}}var Qt=Buffer.from("locked_liquidity","utf8");function $e(n,e){return k([Qt,e.toBuffer()],n)}var nn=x("Sega_cpmm"),E={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173],lockCpLiquidity:[216,157,29,78,38,51,31,26],collectCpFee:[8,30,51,199,209,184,247,133]};function Da(n,e,t,r,s,a,i,o,c,u,g,h,P,b,f,y,m,d,T,B){let C=S([l("amountMaxA"),l("amountMaxB"),l("openTime")]),it=xe(n,t,a,i).publicKey,ot=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!s.equals(it),isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:h,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:N,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:qe,isSigner:!1,isWritable:!1},{pubkey:ye,isSigner:!1,isWritable:!1}],Be=Buffer.alloc(C.span);return C.encode({amountMaxA:d,amountMaxB:T,openTime:B},Be),new D({keys:ot,programId:n,data:Buffer.from([...E.initialize,...Be])})}function Ea(n,e,t,r,s,a,i,o,c,u,g,h,P,b,f){let y=S([l("lpAmount"),l("amountMaxA"),l("amountMaxB")]),m=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:N,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:h,isSigner:!1,isWritable:!0}],d=Buffer.alloc(y.span);return nn.debug("cpmm deposit data",{lpAmount:P.toString(),amountMaxA:b.toString(),amountMaxB:f.toString()}),y.encode({lpAmount:P,amountMaxA:b,amountMaxB:f},d),new D({keys:m,programId:n,data:Buffer.from([...E.deposit,...d])})}function Fa(n,e,t,r,s,a,i,o,c,u,g,h,P,b,f){let y=S([l("lpAmount"),l("amountMinA"),l("amountMinB")]),m=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:N,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:h,isSigner:!1,isWritable:!0},{pubkey:be,isSigner:!1,isWritable:!1}],d=Buffer.alloc(y.span);return y.encode({lpAmount:P,amountMinA:b,amountMinB:f},d),new D({keys:m,programId:n,data:Buffer.from([...E.withdraw,...d])})}function Oa(n,e,t,r,s,a,i,o,c,u,g,h,P,b,f,y){let m=S([l("amountIn"),l("amounOutMin")]),d=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:h,isSigner:!1,isWritable:!1},{pubkey:P,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!0}],T=Buffer.alloc(m.span);return m.encode({amountIn:f,amounOutMin:y},T),new D({keys:d,programId:n,data:Buffer.from([...E.swapBaseInput,...T])})}function Va(n,e,t,r,s,a,i,o,c,u,g,h,P,b,f,y){let m=S([l("amountInMax"),l("amountOut")]),d=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:h,isSigner:!1,isWritable:!1},{pubkey:P,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!0}],T=Buffer.alloc(m.span);return m.encode({amountInMax:f,amountOut:y},T),new D({keys:d,programId:n,data:Buffer.from([...E.swapBaseOutput,...T])})}function va(n){return M(this,null,function*(){var m;let{ownerInfo:e,poolInfo:t,poolKeys:r,feeNftOwner:s,getEphemeralSigners:a}=n,i=[],[o,c]=[new Y(t.id),new Y(t.lpMint.address)],u;if(a)u=new Y((yield a(1))[0]);else{let d=en.generate();i.push(d),u=d.publicKey}let{publicKey:g}=re(s,u,N),{publicKey:h}=He(u),{publicKey:P}=$e(n.lockProgram,u),{publicKey:b}=re(e.wallet,c,N),{publicKey:f}=re(n.lockAuthProgram,c,N),y=rn({programId:n.lockProgram,auth:n.lockAuthProgram,payer:e.feePayer,liquidityOwner:e.wallet,nftOwner:s,nftMint:u,nftAccount:g,poolId:o,lockPda:P,mintLp:c,userLpVault:b,lockLpVault:f,poolVaultA:new Y(r.vault.A),poolVaultB:new Y(r.vault.B),metadataAccount:h,lpAmount:n.lpAmount,withMetadata:(m=n.withMetadata)!=null?m:!0});return{address:{nftMint:u,nftAccount:g,metadataAccount:h,lockPda:P,userLpVault:b,lockLpVault:f},instructions:[y],signers:i,instructionTypes:[ne.CpmmLockLp],lookupTableAddress:[]}})}function rn({programId:n,auth:e,payer:t,liquidityOwner:r,nftOwner:s,nftMint:a,nftAccount:i,poolId:o,lockPda:c,mintLp:u,userLpVault:g,lockLpVault:h,poolVaultA:P,poolVaultB:b,metadataAccount:f,lpAmount:y,withMetadata:m}){let d=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!0,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:h,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:ye,isSigner:!1,isWritable:!1},{pubkey:tn.programId,isSigner:!1,isWritable:!1},{pubkey:N,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:z,isSigner:!1,isWritable:!1}],T=S([l("lpAmount"),X("withMetadata")]),B=Buffer.alloc(T.span);T.encode({lpAmount:y,withMetadata:m},B);let C=Buffer.from([...E.lockCpLiquidity,...B]);return new D({keys:d,programId:n,data:C})}function Ua({programId:n,nftOwner:e,auth:t,nftAccount:r,lockPda:s,poolId:a,mintLp:i,userVaultA:o,userVaultB:c,poolVaultA:u,poolVaultB:g,mintA:h,mintB:P,lockLpVault:b,lpFeeAmount:f,cpmmProgram:y,cpmmAuthProgram:m}){let d=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:y!=null?y:Ye,isSigner:!1,isWritable:!1},{pubkey:m!=null?m:Ze,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:h,isSigner:!1,isWritable:!1},{pubkey:P,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:N,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:be,isSigner:!1,isWritable:!1}],T=S([l("lpFeeAmount")]),B=Buffer.alloc(T.span);T.encode({lpFeeAmount:f},B);let C=Buffer.from([...E.collectCpFee,...B]);return new D({keys:d,programId:n,data:C})}import ke from"bn.js";import ae from"decimal.js-light";import Z from"bn.js";function ie(n,e){if(e.isZero())throw Error("divisor is zero");return n.mod(e)}function on(n,e){if(e.isZero())throw Error("rhs is zero");let t=n.div(e);if(t.isZero())throw Error("quotient is zero");let r=ie(n,e);return r.gt(v)&&(t=t.add(new Z(1)),e=n.div(t),r=ie(n,t),r.gt(v)&&(e=e.add(new Z(1)))),[t,e]}var v=new Z(0),oe=class{static swapWithoutFees(e,t,r){let s=t.mul(r),a=t.add(e),[i]=on(s,a),o=r.sub(i);if(o.isZero())throw Error("destinationAmountSwapped is zero");return{destinationAmountSwapped:o}}static lpTokensToTradingTokens(e,t,r,s,a){let i=e.mul(r).div(t),o=e.mul(s).div(t);if(a===0)return{tokenAmount0:i,tokenAmount1:o};if(a===1)return ie(e.mul(r),t).gt(v)&&i.gt(v)&&(i=i.add(new Z(1))),ie(e.mul(s),t).gt(v)&&o.gt(v)&&(o=o.add(new Z(1))),{tokenAmount0:i,tokenAmount1:o};throw Error("roundDirection value error")}};import nt from"bn.js";var Se=new nt(1e6);function sn(n,e,t){return n.mul(e).add(t).sub(new nt(1)).div(t)}function tt(n,e,t){return n.mul(e).div(t)}var se=class{static tradingFee(e,t){return sn(e,t,Se)}static protocolFee(e,t){return tt(e,t,Se)}static fundFee(e,t){return tt(e,t,Se)}};var et=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(et||{}),rt=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swap(e,t,r,s){let a=se.tradingFee(e,s),i=e.sub(a),{destinationAmountSwapped:o}=oe.swapWithoutFees(i,t,r);return{newSwapDestinationAmount:r.sub(o),sourceAmountSwapped:e,destinationAmountSwapped:o,tradeFee:a}}static swapBaseOut({poolMintA:e,poolMintB:t,tradeFeeRate:r,baseReserve:s,quoteReserve:a,outputMint:i,outputAmount:o}){let[c,u,g,h,P]=t.address===i.toString()?[s,a,e.decimals,t.decimals,e.address]:[a,s,t.decimals,e.decimals,t.address],b=new ae(u.toString()).div(F(10,h)).div(new ae(c.toString()).div(F(10,g))),f=o.gte(u)?u.sub(new ke(1)):o,y=u.sub(f),m=Te(c.mul(f),y),d=Te(m.mul(new ke(1e6)),new ke(1e6).sub(r)),T=d.sub(m),B=new ae(f.toString()).div(F(10,h)).div(new ae(d.toString()).div(F(10,g))),C=b.isZero()?0:B.sub(b).div(b).abs().toNumber();return{amountRealOut:f,amountIn:d,amountInWithoutFee:m,tradeFee:T,priceImpact:C}}};export{oe as ConstantProductCurve,cr as CpmmConfigInfoLayout,se as CpmmFee,lr as CpmmPoolInfoLayout,rt as CurveCalculator,Se as FEE_RATE_DENOMINATOR_VALUE,Qt as LOCK_LIQUIDITY_SEED,et as RoundDirection,sn as ceilDiv,Ua as collectCpFeeInstruction,rn as cpmmLockPositionInstruction,tt as floorDiv,$e as getCpLockPda,Ba as getCpmmPdaAmmConfigId,xe as getCpmmPdaPoolId,Aa as getCreatePoolKeys,Jt as getPdaLpMint,Xt as getPdaObservationId,Zt as getPdaPoolAuthority,Xe as getPdaVault,va as makeCpmmLockInstruction,Da as makeCreateCpmmPoolInInstruction,Ea as makeDepositCpmmInInstruction,Oa as makeSwapCpmmBaseInInstruction,Va as makeSwapCpmmBaseOutInstruction,Fa as makeWithdrawCpmmInInstruction}; //# sourceMappingURL=index.mjs.map