UNPKG

solana-presale-sdk

Version:

SDK for Solana Presale Program

2 lines (1 loc) 16.6 kB
"use strict";var M=Object.create;var f=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var F=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var U=(a,e)=>{for(var t in e)f(a,t,{get:e[t],enumerable:!0})},I=(a,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of E(e))!R.call(a,r)&&r!==t&&f(a,r,{get:()=>e[r],enumerable:!(n=V(e,r))||n.enumerable});return a};var P=(a,e,t)=>(t=a!=null?M(F(a)):{},I(e||!a||!a.__esModule?f(t,"default",{value:a,enumerable:!0}):t,a)),W=a=>I(f({},"__esModule",{value:!0}),a);var H={};U(H,{ADMIN_PUBLIC_KEY:()=>K,AdminPublicKey:()=>A,MINT_TOKEN_ADDRESS:()=>S,PROGRAM_ID:()=>x,PresaleClient:()=>T,derivePresaleAddress:()=>u,derivePresaleVaultAddress:()=>g,deriveUserInfoAddress:()=>_,formatSol:()=>L,mintTokenPubKey:()=>C,parseSol:()=>d,programIdPubKey:()=>k,shortenAddress:()=>G,solUnits:()=>b});module.exports=W(H);var c=P(require("@coral-xyz/anchor")),D=require("@coral-xyz/anchor"),s=require("@solana/web3.js"),o=require("@solana/spl-token"),l=P(require("moment"));var w=require("@solana/web3.js");var h=require("@solana/web3.js"),x="4NiRZQQ5Rgsoy2zZ7SWAJAvbCuimUH1nY1nwCFKnfPtz",S="Ah1hf7NZgBhgnhFsrXLoj7czMMiVwUaCHnc5bP9wB6Ge",K="94N4YzP2ihmdXNe3SgXJiBjymyBrS73VSz6QwX5QPSor",k=new h.PublicKey(x),C=new h.PublicKey(S),A=new h.PublicKey(K),b={lamports:9};var N=P(require("@coral-xyz/anchor")),G=a=>a.slice(0,4)+"..."+a.slice(-5),u=async()=>{let[a,e]=w.PublicKey.findProgramAddressSync([Buffer.from("presale"),A.toBuffer()],k);return{presaleAddress:a,bump:e}},g=async()=>{let a=Buffer.from("vault"),[e,t]=w.PublicKey.findProgramAddressSync([a],k);return{presaleVault:e,bump:t}},_=async a=>{let[e]=w.PublicKey.findProgramAddressSync([Buffer.from("user"),a.toBuffer()],k);return e};function d(a){let e=Q(a,b.lamports);return new N.BN(e.toString())}function L(a){return Z(a,b.lamports)}function Q(a,e){if(!/^(-?)([0-9]*)\.?([0-9]*)$/.test(a))throw new Error("Invalid decimal number");let[t,n="0"]=a.split("."),r=t.startsWith("-");return r&&(t=t.slice(1)),n=n.padEnd(e,"0"),BigInt(`${r?"-":""}${t}${n}`)}function Z(a,e){let t=a.toString(),n=t.startsWith("-");n&&(t=t.slice(1)),t=t.padStart(e,"0");let r=t.slice(0,t.length-e)||"0",i=t.slice(t.length-e).replace(/(0+)$/,"");return`${n?"-":""}${r}${i?`.${i}`:""}`}var B={address:"4NiRZQQ5Rgsoy2zZ7SWAJAvbCuimUH1nY1nwCFKnfPtz",metadata:{name:"terminus_presale",version:"0.1.0",spec:"0.1.0",description:"Created with Anchor"},instructions:[{name:"buy_token",discriminator:[138,127,14,91,38,87,115,105],accounts:[{name:"presale_info",writable:!0,pda:{seeds:[{kind:"const",value:[112,114,101,115,97,108,101]},{kind:"account",path:"presale_info.authority",account:"PresaleInfo"}]}},{name:"user_info",writable:!0,pda:{seeds:[{kind:"const",value:[117,115,101,114]},{kind:"account",path:"buyer"}]}},{name:"presale_vault",writable:!0,pda:{seeds:[{kind:"const",value:[118,97,117,108,116]}]}},{name:"buyer",writable:!0,signer:!0},{name:"rent",address:"SysvarRent111111111111111111111111111111111"},{name:"system_program",address:"11111111111111111111111111111111"},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"}],args:[{name:"quote_amount",type:"u64"}]},{name:"claim_token",discriminator:[116,206,27,191,166,19,0,73],accounts:[{name:"token_mint",writable:!0},{name:"token_account",writable:!0,pda:{seeds:[{kind:"account",path:"buyer"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"token_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"presale_associated_token_account",writable:!0,pda:{seeds:[{kind:"account",path:"presale_info"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"token_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"user_info",writable:!0,pda:{seeds:[{kind:"const",value:[117,115,101,114]},{kind:"account",path:"buyer"}]}},{name:"presale_info",writable:!0,pda:{seeds:[{kind:"const",value:[112,114,101,115,97,108,101]},{kind:"account",path:"presale_info.authority",account:"PresaleInfo"}]}},{name:"buyer",writable:!0,signer:!0},{name:"rent",address:"SysvarRent111111111111111111111111111111111"},{name:"system_program",address:"11111111111111111111111111111111"},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"}],args:[{name:"bump",type:"u8"}]},{name:"create_presale",discriminator:[176,144,197,158,61,119,75,135],accounts:[{name:"presale_info",writable:!0,pda:{seeds:[{kind:"const",value:[112,114,101,115,97,108,101]},{kind:"account",path:"authority"}]}},{name:"authority",writable:!0,signer:!0},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"token_mint_address",type:"pubkey"},{name:"softcap_amount",type:"u64"},{name:"hardcap_amount",type:"u64"},{name:"max_token_amount_per_address",type:"u64"},{name:"price_per_token",type:"u64"},{name:"start_time",type:"u64"},{name:"end_time",type:"u64"}]},{name:"deposit_token",discriminator:[11,156,96,218,39,163,180,19],accounts:[{name:"mint_account",writable:!0},{name:"token_account",writable:!0,pda:{seeds:[{kind:"account",path:"admin"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_account"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"admin",writable:!0,signer:!0},{name:"to_associated_token_account",writable:!0,pda:{seeds:[{kind:"account",path:"presale_info"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_account"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"presale_vault",writable:!0,pda:{seeds:[{kind:"const",value:[118,97,117,108,116]}]}},{name:"presale_info",writable:!0,pda:{seeds:[{kind:"const",value:[112,114,101,115,97,108,101]},{kind:"account",path:"presale_info.authority",account:"PresaleInfo"}]}},{name:"rent",address:"SysvarRent111111111111111111111111111111111"},{name:"system_program",address:"11111111111111111111111111111111"},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"}],args:[{name:"amount",type:"u64"}]},{name:"start_presale",discriminator:[57,19,73,191,195,254,45,223],accounts:[{name:"presale_info",writable:!0,pda:{seeds:[{kind:"const",value:[112,114,101,115,97,108,101]},{kind:"account",path:"presale_info.authority",account:"PresaleInfo"}]}},{name:"admin",writable:!0,signer:!0}],args:[{name:"start_time",type:"u64"},{name:"end_time",type:"u64"}]},{name:"update_presale",discriminator:[9,223,20,184,183,199,90,226],accounts:[{name:"presale_info",writable:!0,pda:{seeds:[{kind:"const",value:[112,114,101,115,97,108,101]},{kind:"account",path:"presale_info.authority",account:"PresaleInfo"}]}},{name:"authority",writable:!0,signer:!0},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"max_token_amount_per_address",type:"u64"},{name:"price_per_token",type:"u64"},{name:"softcap_amount",type:"u64"},{name:"hardcap_amount",type:"u64"},{name:"start_time",type:"u64"},{name:"end_time",type:"u64"}]},{name:"withdraw_sol",discriminator:[145,131,74,136,65,137,42,38],accounts:[{name:"presale_info",pda:{seeds:[{kind:"const",value:[112,114,101,115,97,108,101]},{kind:"account",path:"presale_info.authority",account:"PresaleInfo"}]}},{name:"presale_vault",writable:!0,pda:{seeds:[{kind:"const",value:[118,97,117,108,116]}]}},{name:"admin",writable:!0,signer:!0},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"bump",type:"u8"}]},{name:"withdraw_token",discriminator:[136,235,181,5,101,109,57,81],accounts:[{name:"mint_account",writable:!0},{name:"admin_associated_token_account",writable:!0,pda:{seeds:[{kind:"account",path:"admin"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"presale_token_mint_account"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"presale_associated_token_account",writable:!0,pda:{seeds:[{kind:"account",path:"presale_info"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"presale_token_mint_account"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"presale_token_mint_account",writable:!0},{name:"presale_info",writable:!0,pda:{seeds:[{kind:"const",value:[112,114,101,115,97,108,101]},{kind:"account",path:"presale_info.authority",account:"PresaleInfo"}]}},{name:"admin",writable:!0,signer:!0},{name:"rent",address:"SysvarRent111111111111111111111111111111111"},{name:"system_program",address:"11111111111111111111111111111111"},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"}],args:[{name:"amount",type:"u64"},{name:"bump",type:"u8"}]}],accounts:[{name:"PresaleInfo",discriminator:[11,19,36,47,79,104,214,40]},{name:"UserInfo",discriminator:[83,134,200,56,144,56,10,62]}],errors:[{code:6e3,name:"Unauthorized",msg:"You are not authorized to perform this action."},{code:6001,name:"NotAllowed",msg:"Not allowed"},{code:6002,name:"MathOverflow",msg:"Math operation overflow"},{code:6003,name:"AlreadyMarked",msg:"Already marked"},{code:6004,name:"PresaleNotStarted",msg:"Presale not started yet"},{code:6005,name:"PresaleEnded",msg:"Presale already ended"},{code:6006,name:"TokenAmountMismatch",msg:"Token amount mismatch"},{code:6007,name:"InsufficientFund",msg:"Insufficient Tokens"},{code:6008,name:"ExceedMaximumBuy",msg:"Token purchase exceeds the maximum allowed per user!"},{code:6009,name:"PresaleNotEnded",msg:"Presale not ended yet"},{code:6010,name:"HardCapped",msg:"Presale already ended HardCapped"},{code:6011,name:"InvalidPrice",msg:"Price per token cannot be zero."},{code:6012,name:"InvalidSoftcap",msg:"Softcap amount must be greater than zero."},{code:6013,name:"InvalidHardcap",msg:"Hardcap must be greater than or equal to the softcap."},{code:6014,name:"InvalidTimeRange",msg:"Start time must be earlier than the end time."},{code:6015,name:"CalculationError",msg:"A calculation or division error occurred."},{code:6016,name:"EmptyVault",msg:"The vault is empty. No SOL to withdraw."}],types:[{name:"PresaleInfo",type:{kind:"struct",fields:[{name:"token_mint_address",type:"pubkey"},{name:"softcap_amount",type:"u64"},{name:"hardcap_amount",type:"u64"},{name:"deposit_token_amount",type:"u64"},{name:"sold_token_amount",type:"u64"},{name:"start_time",type:"u64"},{name:"end_time",type:"u64"},{name:"max_token_amount_per_address",type:"u64"},{name:"price_per_token",type:"u64"},{name:"is_live",type:"bool"},{name:"authority",type:"pubkey"},{name:"is_soft_capped",type:"bool"},{name:"is_hard_capped",type:"bool"}]}},{name:"UserInfo",type:{kind:"struct",fields:[{name:"buy_quote_amount",type:"u64"},{name:"buy_token_amount",type:"u64"},{name:"buy_time",type:"u64"},{name:"claim_time",type:"u64"}]}}],constants:[{name:"PRESALE_SEED",type:"bytes",value:"[80, 82, 69, 83, 65, 76, 69, 95, 83, 69, 69, 68]"}]};var T=class{constructor(e,t,n){this.connection=e,this.wallet=t;let r=new D.AnchorProvider(e,t,{commitment:"processed"});this.program=new c.Program(B,r)}async fetchPresaleInfo(){let e=await this.program.account.presaleInfo.all(),t=e[0].account,n=e[0].publicKey;return{presaleInfo:t,presaleInfoAddress:n}}async fetchUserInfo(e){let t=await _(e);return await this.program.account.userInfo.fetch(t)}async startPresale(e){let{presaleAddress:t}=await u(),n=new c.BN((0,l.default)(e.startTime).unix()),r=new c.BN((0,l.default)(e.endTime).unix());return await this.program.methods.startPresale(n,r).accounts({presaleInfo:t,authority:this.wallet.publicKey}).rpc()}async createPresale(e){let{presaleAddress:t}=await u(),n=new s.PublicKey(e.tokenMintAddress),r=d(e.softcapAmount.toString()),i=d(e.hardcapAmount.toString()),m=new c.BN(e.maxTokenAmountPerAddress),p=d(e.pricePerToken.toString()),y=new c.BN((0,l.default)(e.startTime).unix()),v=new c.BN((0,l.default)(e.endTime).unix());return await this.program.methods.createPresale(n,r,i,m,p,y,v).accounts({presaleInfo:t,authority:this.wallet.publicKey,systemProgram:s.SystemProgram.programId}).rpc()}async updatePresale(e){let{presaleAddress:t}=await u(),n=d(e.softcapAmount.toString()),r=d(e.hardcapAmount.toString()),i=new c.BN(e.maxTokenAmountPerAddress),m=d(e.pricePerToken.toString()),p=new c.BN((0,l.default)(e.startTime).unix()),y=new c.BN((0,l.default)(e.endTime).unix());return await this.program.methods.updatePresale(i,m,n,r,p,y).accounts({presaleInfo:t,authority:this.wallet.publicKey,systemProgram:s.SystemProgram.programId}).rpc()}async buyToken(e){let{presaleAddress:t}=await u(),n=await _(this.wallet.publicKey),{presaleVault:r}=await g(),i=d(e.amount.toString());return await this.program.methods.buyToken(i).accounts({presaleInfo:t,userInfo:n,presaleVault:r,buyer:this.wallet.publicKey,rent:s.SYSVAR_RENT_PUBKEY,systemProgram:s.SystemProgram.programId,tokenProgram:o.TOKEN_PROGRAM_ID,associatedTokenProgram:o.ASSOCIATED_TOKEN_PROGRAM_ID}).rpc()}async depositToken(e,t){let{presaleAddress:n}=await u(),{presaleVault:r}=await g(),i=await(0,o.getAssociatedTokenAddressSync)(t.tokenMintAddress,this.wallet.publicKey),m=await(0,o.getAssociatedTokenAddressSync)(t.tokenMintAddress,n,!0),p=d(e.amount.toString());return await this.program.methods.depositToken(p).accounts({mintAccount:t.tokenMintAddress,tokenAccount:i,admin:this.wallet.publicKey,toAssociatedTokenAccount:m,presaleVault:r,presaleInfo:n,rent:s.SYSVAR_RENT_PUBKEY,systemProgram:s.SystemProgram.programId,tokenProgram:o.TOKEN_PROGRAM_ID,associatedTokenProgram:o.ASSOCIATED_TOKEN_PROGRAM_ID}).rpc()}async withdrawTokens(e,t){let{presaleAddress:n,bump:r}=await u(),i=await(0,o.getAssociatedTokenAddressSync)(t.tokenMintAddress,this.wallet.publicKey),m=await(0,o.getAssociatedTokenAddressSync)(t.tokenMintAddress,n,!0),p=new c.BN(e.amount);return await this.program.methods.withdrawToken(p,new c.BN(r)).accounts({mintAccount:t.tokenMintAddress,presaleTokenMintAccount:t.tokenMintAddress,adminAssociatedTokenAccount:i,presaleAssociatedTokenAccount:m,presaleInfo:n,admin:this.wallet.publicKey,rent:s.SYSVAR_RENT_PUBKEY,systemProgram:s.SystemProgram.programId,tokenProgram:o.TOKEN_PROGRAM_ID,associatedTokenProgram:o.ASSOCIATED_TOKEN_PROGRAM_ID}).rpc()}async claimTokens(e){let{presaleAddress:t,bump:n}=await u(),r=await _(this.wallet.publicKey),i=await(0,o.getAssociatedTokenAddressSync)(e.tokenMintAddress,this.wallet.publicKey),m=await(0,o.getAssociatedTokenAddressSync)(e.tokenMintAddress,t,!0);return await this.program.methods.claimToken(n).accounts({tokenMint:e.tokenMintAddress,tokenAccount:i,presaleAssociatedTokenAccount:m,userInfo:r,presaleInfo:t,buyer:this.wallet.publicKey,rent:s.SYSVAR_RENT_PUBKEY,systemProgram:s.SystemProgram.programId,tokenProgram:o.TOKEN_PROGRAM_ID,associatedTokenProgram:o.ASSOCIATED_TOKEN_PROGRAM_ID}).rpc()}async withdrawSOL(){let{presaleAddress:e}=await u(),{presaleVault:t,bump:n}=await g();return await this.program.methods.withdrawSol(n).accounts({presaleInfo:e,presaleVault:t,admin:this.wallet.publicKey,rent:s.SYSVAR_RENT_PUBKEY,systemProgram:s.SystemProgram.programId}).rpc()}};0&&(module.exports={ADMIN_PUBLIC_KEY,AdminPublicKey,MINT_TOKEN_ADDRESS,PROGRAM_ID,PresaleClient,derivePresaleAddress,derivePresaleVaultAddress,deriveUserInfoAddress,formatSol,mintTokenPubKey,parseSol,programIdPubKey,shortenAddress,solUnits});