snapper-sdk
Version:
An SDK for building applications on top of Snapper.
2 lines • 8.53 kB
JavaScript
import{SystemProgram as i,SYSVAR_RENT_PUBKEY as j,Transaction as N,TransactionInstruction as H}from"@solana/web3.js";import{createInitializeAccountInstruction as D,TOKEN_PROGRAM_ID as M}from"@solana/spl-token";var u={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",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmCreateConfig:"CpmmCreateConfig",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee"};import{PublicKey as Y}from"@solana/web3.js";import R,{isBN as Ie}from"bn.js";import{bits as E,BitStructure as $,blob as Q,Blob as ee,cstr as te,f32 as ne,f32be as re,f64 as oe,f64be as se,greedy as ue,Layout as W,ns64 as ae,ns64be as ie,nu64 as ce,nu64be as pe,offset as ye,s16 as de,s16be as me,s24 as be,s24be as Pe,s32 as le,s32be as xe,s40 as ge,s40be as Le,s48 as Se,s48be as fe,s8 as he,seq as Te,struct as we,Structure as k,u16 as O,u16be as Be,u24 as Ce,u24be as Ae,u32 as z,u32be as Ve,u40 as _e,u40be as qe,u48 as Ke,u48be as Ue,u8 as Re,UInt as G,union as Fe,Union as ve,unionLayoutDiscriminator as Ne,utf8 as De}from"@solana/buffer-layout";var m=W,K=k;var l=G;var U=O;var x=z;var p=Q;var g=E;var L=class extends m{constructor(e,r,o){super(e,o);this.blob=p(e),this.signed=r}decode(e,r=0){let o=new R(this.blob.decode(e,r),10,"le");return this.signed?o.fromTwos(this.span*8).clone():o}encode(e,r,o=0){return typeof e=="number"&&(e=new R(e)),this.signed&&(e=e.toTwos(this.span*8)),this.blob.encode(e.toArrayLike(Buffer,"le",this.span),r,o)}},b=class extends m{constructor(e){super(8,e);this._lower=g(x(),!1),this._upper=g(x(),!1)}addBoolean(e){this._lower.fields.length<32?this._lower.addBoolean(e):this._upper.addBoolean(e)}decode(e,r=0){let o=this._lower.decode(e,r),c=this._upper.decode(e,r+this._lower.span);return{...o,...c}}encode(e,r,o=0){return this._lower.encode(e,r,o)+this._upper.encode(e,r,o+this._lower.span)}};function F(n){return new l(1,n)}function v(n){return new l(4,n)}function s(n){return new L(8,!1,n)}var S=class extends m{constructor(e,r,o,c){super(e.span,c);this.layout=e,this.decoder=r,this.encoder=o}decode(e,r){return this.decoder(this.layout.decode(e,r))}encode(e,r,o){return this.layout.encode(this.encoder(e),r,o)}getSpan(e,r){return this.layout.getSpan(e,r)}};function a(n){return new S(p(32),t=>new Y(t),t=>t.toBuffer(),n)}var f=class extends K{decode(t,e){return super.decode(t,e)}};function P(n,t,e){return new f(n,t,e)}function I(n="accountFlags"){let t=new b(n);return t.addBoolean("initialized"),t.addBoolean("market"),t.addBoolean("openOrders"),t.addBoolean("requestQueue"),t.addBoolean("eventQueue"),t.addBoolean("bids"),t.addBoolean("asks"),t}var h=P([p(5),I("accountFlags"),a("ownAddress"),s("vaultSignerNonce"),a("baseMint"),a("quoteMint"),a("baseVault"),s("baseDepositsTotal"),s("baseFeesAccrued"),a("quoteVault"),s("quoteDepositsTotal"),s("quoteFeesAccrued"),s("quoteDustThreshold"),a("requestQueue"),a("eventQueue"),a("bids"),a("asks"),s("baseLotSize"),s("quoteLotSize"),s("feeRateBps"),s("referrerRebatesAccrued"),p(7)]);function J({programId:n,marketInfo:t}){let e=P([F("version"),v("instruction"),s("baseLotSize"),s("quoteLotSize"),U("feeRateBps"),s("vaultSignerNonce"),s("quoteDustThreshold")]),r=[{pubkey:t.id,isSigner:!1,isWritable:!0},{pubkey:t.requestQueue,isSigner:!1,isWritable:!0},{pubkey:t.eventQueue,isSigner:!1,isWritable:!0},{pubkey:t.bids,isSigner:!1,isWritable:!0},{pubkey:t.asks,isSigner:!1,isWritable:!0},{pubkey:t.baseVault,isSigner:!1,isWritable:!0},{pubkey:t.quoteVault,isSigner:!1,isWritable:!0},{pubkey:t.baseMint,isSigner:!1,isWritable:!1},{pubkey:t.quoteMint,isSigner:!1,isWritable:!1},{pubkey:t.authority?t.quoteMint:j,isSigner:!1,isWritable:!1}].concat(t.authority?{pubkey:t.authority,isSigner:!1,isWritable:!1}:[]).concat(t.authority&&t.pruneAuthority?{pubkey:t.pruneAuthority,isSigner:!1,isWritable:!1}:[]),o=Buffer.alloc(e.span);return e.encode({version:0,instruction:0,baseLotSize:t.baseLotSize,quoteLotSize:t.quoteLotSize,feeRateBps:t.feeRateBps,vaultSignerNonce:t.vaultSignerNonce,quoteDustThreshold:t.quoteDustThreshold},o),new H({keys:r,programId:n,data:o})}async function at({connection:n,wallet:t,marketInfo:e}){var T,w,B,C,A,V,_,q;let r=new N,o=await n.getMinimumBalanceForRentExemption(165);r.add(i.createAccountWithSeed({fromPubkey:t,basePubkey:t,seed:e.baseVault.seed,newAccountPubkey:e.baseVault.publicKey,lamports:o,space:165,programId:M}),i.createAccountWithSeed({fromPubkey:t,basePubkey:t,seed:e.quoteVault.seed,newAccountPubkey:e.quoteVault.publicKey,lamports:o,space:165,programId:M}),D(e.baseVault.publicKey,e.baseMint,e.vaultOwner),D(e.quoteVault.publicKey,e.quoteMint,e.vaultOwner));let c=new N;return c.add(i.createAccountWithSeed({fromPubkey:t,basePubkey:t,seed:e.id.seed,newAccountPubkey:e.id.publicKey,lamports:await n.getMinimumBalanceForRentExemption(h.span),space:h.span,programId:e.programId}),i.createAccountWithSeed({fromPubkey:t,basePubkey:t,seed:e.requestQueue.seed,newAccountPubkey:e.requestQueue.publicKey,lamports:await n.getMinimumBalanceForRentExemption((T=e.requestQueueSpace)!=null?T:5120+12),space:(w=e.requestQueueSpace)!=null?w:5120+12,programId:e.programId}),i.createAccountWithSeed({fromPubkey:t,basePubkey:t,seed:e.eventQueue.seed,newAccountPubkey:e.eventQueue.publicKey,lamports:await n.getMinimumBalanceForRentExemption((B=e.eventQueueSpace)!=null?B:262144+12),space:(C=e.eventQueueSpace)!=null?C:262144+12,programId:e.programId}),i.createAccountWithSeed({fromPubkey:t,basePubkey:t,seed:e.bids.seed,newAccountPubkey:e.bids.publicKey,lamports:await n.getMinimumBalanceForRentExemption((A=e.orderbookQueueSpace)!=null?A:65536+12),space:(V=e.orderbookQueueSpace)!=null?V:65536+12,programId:e.programId}),i.createAccountWithSeed({fromPubkey:t,basePubkey:t,seed:e.asks.seed,newAccountPubkey:e.asks.publicKey,lamports:await n.getMinimumBalanceForRentExemption((_=e.orderbookQueueSpace)!=null?_:65536+12),space:(q=e.orderbookQueueSpace)!=null?q:65536+12,programId:e.programId}),J({programId:e.programId,marketInfo:{id:e.id.publicKey,requestQueue:e.requestQueue.publicKey,eventQueue:e.eventQueue.publicKey,bids:e.bids.publicKey,asks:e.asks.publicKey,baseVault:e.baseVault.publicKey,quoteVault:e.quoteVault.publicKey,baseMint:e.baseMint,quoteMint:e.quoteMint,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold}})),[{transaction:r,signer:[],instructionTypes:[u.CreateAccount,u.CreateAccount,u.InitAccount,u.InitAccount]},{transaction:c,signer:[],instructionTypes:[u.CreateAccount,u.CreateAccount,u.CreateAccount,u.CreateAccount,u.CreateAccount,u.InitMarket]}]}export{J as initializeMarket,at as makeCreateMarketInstruction};
//# sourceMappingURL=instrument.mjs.map