├── .env.example ├── .gitignore ├── .prettierignore ├── .prettierrc ├── .vscode └── settings.json ├── README.md ├── dist ├── command │ └── bump-command.js ├── index.js ├── model │ ├── token.js │ └── user.js ├── service │ ├── pumpfun │ │ ├── api.js │ │ ├── constants.js │ │ ├── swap.js │ │ ├── types.js │ │ └── utils.js │ └── solana │ │ ├── get-balance.js │ │ ├── get-token-account.js │ │ └── get-token-balance.js └── solana │ ├── get-balance.js │ ├── get-token-account.js │ └── get-token-balance.js ├── package-lock.json ├── package.json ├── src ├── command │ └── bump-command.ts ├── index.ts └── solana │ ├── get-balance.ts │ ├── get-token-account.ts │ └── get-token-balance.ts ├── tsconfig.build.json └── tsconfig.json /.env.example: -------------------------------------------------------------------------------- 1 | # The amount in Solana for which tokens are bought in each transaction 2 | BUY_AMOUNT=0.01 3 | 4 | # The time interval in seconds in which tokens are bought 5 | BUY_INTERVAL=15 6 | 7 | # The amount in Solana you want to add as priorioty fee for each transaction. 8 | # In my tests i didn't need any priority fees. 9 | PRIORITY_FEE=0 10 | 11 | # Slipage in decimals. 0.1 = 10% 12 | SLIPPAGE=0.25 13 | 14 | # The url to your solana node. With free rpcs you will not land every transaction. 15 | RPC_URL="https://mainnet.helius-rpc.com/?api-key=123" -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | node_modules/ 5 | docs/ 6 | /.pnp 7 | .pnp.js 8 | all_pools.json 9 | # testing 10 | coverage/ 11 | 12 | # misc 13 | .DS_Store 14 | .env 15 | .env.local 16 | .env.development.local 17 | .env.test.local 18 | .env.production.local 19 | var/* 20 | npm-debug.log* 21 | yarn-debug.log* 22 | yarn-error.log* 23 | 24 | # Custom 25 | .vstags 26 | **.pem 27 | **.crt 28 | **.bak -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | README.md -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "printWidth": 150, 4 | "proseWrap": "always", 5 | "tabWidth": 4, 6 | "useTabs": false, 7 | "trailingComma": "none", 8 | "bracketSpacing": true, 9 | "jsxBracketSameLine": false, 10 | "semi": true 11 | } 12 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.defaultFormatter": "esbenp.prettier-vscode", 3 | "editor.bracketPairColorization.enabled": true, 4 | "editor.formatOnSave": true, 5 | "editor.formatOnPaste": true 6 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Pump Bump - A pump.fun bumping bot 2 | 3 | 💊 A free to use bumping/bump bot for pump.fun! [join the discord](https://discord.gg/HUVAbet2Dp), frend! 4 | 5 | ![Static Badge](https://img.shields.io/badge/degen-100%25-pink) 6 | ![GitHub Repo stars](https://img.shields.io/github/stars/degenfrends/solana-rugchecker) 7 | ![X (formerly Twitter) URL](https://img.shields.io/twitter/url?url=https%3A%2F%2Fx.com%2Fkryptobrah&label=Twitter%2FX) 8 | 9 | __Advanced version of this bot for sale in [discord](https://discord.gg/HUVAbet2Dp)!__ 10 | * __Buy&Sell in same transaction__ 11 | * __Bump in random intervalls__ 12 | * __Bump for random amount__ 13 | * __Jito Bundles__ 14 | * __Stealth sells__ 15 | * __Multiple wallet support__ 16 | * __I can add any feature you like__ 17 | 18 | __Advanced pump.fun bundler for sale in [discord](https://discord.gg/HUVAbet2Dp)!__ 19 | 20 | > [!CAUTION] 21 | > Do not use your main wallet with this bot, since you have to expose your private key to your command line and if your computer gets/is compromissed, attackers can read your private key from the command line history or the environment variables. 22 | 23 | > [!CAUTION] 24 | > If you somehow lose your money while using this bot, it is not our fault. We use this bot ourselves in exact this version and we do our best to provide a functioning bot, but in any case of malfunctioning or misonfiguration it is possible to lose your money. So be careful and check always if you got everything correct, before you start the bot! 25 | 26 | ## If you made some money off of this and you want to contribute to the ongoing development, you can send some SOL to this address: xe18XoG9HpgpmZ6C4GLAfnDtD7xGc6dEjen7NfF3V9g 27 | 28 | ## Requirements 29 | You need a fresh Solana wallet with not more than what you want to use for bumping! This is important, since you have to expose your private key to your command line and if your computer gets/is compromissed, attackers can read your private key from the command line history or your environment variables. 30 | 31 | You need to export the private key of that Solana wallet. 32 | 33 | You need to have NodeJS Version >= 20 installed. 34 | 35 | [Download NodeJS here](https://nodejs.org/) for your operating system and run the installer! 36 | 37 | > [!TIP] 38 | > If you have problems to understand all of this, [join the discord](https://discord.gg/HUVAbet2Dp)! 39 | 40 | ## Installation 41 | [Download the ZIP file](https://github.com/degenfrends/pump-bump/archive/refs/heads/main.zip) and unpack it, or clone the repository. 42 | 43 | ```bash 44 | git clone https://github.com/degenfrends/pump-bump.git pump-bump 45 | ``` 46 | ## Configuration 47 | Go to the directory in which you unpacked the zip or cloned the repository to. 48 | Change the name of the .env.example file to .env and open the file in the editor of your choice. 49 | ```bash 50 | cd pump-bump 51 | mv .env.example .env 52 | ``` 53 | The settings are documented, so it shouldn't be a problem for you to set it up as you wish. 54 | 55 | ```python 56 | # The amount in Solana for which tokens are bought in each transaction 57 | BUY_AMOUNT=0.0001 58 | # The time interval in seconds in which tokens are bought 59 | BUY_INTERVAL=15 60 | # The amount in Solana you want to add as priorioty fee for each transaction. 61 | PRIORITY_FEE=0.00003 62 | # Slipage in decimals. 0.1 = 10% 63 | SLIPPAGE=0.25 64 | # The url to your solana node. 65 | RPC_URL="https://api.mainnet-beta.solana.com" 66 | # Your exported private key phrase 67 | PRIVATE_KEY="1234abcde1234abcde12345abcde" 68 | ``` 69 | 70 | > [!CAUTION] 71 | > You need a rpc endpoint from helius, triton, quiknode or a better one. Free tiers will not land every transaction. 72 | 73 | Save the .env file. 74 | 75 | ## Run the bot 76 | To run the bot, you need your bumping wallet address, the private key of your bumping wallet and the token address of the token you want to bump. 77 | Open your console/command line/terminal and go to the directory in which you have unpacked or cloned the repository and execute the following command. 78 | ```bash 79 | node dist/index.js --privateKey=REPLACE_WITH_PRIVATE_KEY --walletAddress=REPLACE_WITH_WALLET_ADDRESS --tokenAddress=REPLACE_WITH_TOKEN_ADDRESS 80 | ``` 81 | If you save your private key in the .env file, you don't need to pass it as argument. 82 | ```bash 83 | node dist/index.js --walletAddress=REPLACE_WITH_WALLET_ADDRESS --tokenAddress=REPLACE_WITH_TOKEN_ADDRESS 84 | ``` 85 | 86 | To stop it press crtl+c in the command line. 87 | 88 | > [!TIP] 89 | > If you run into any errors, [open an issue here](https://github.com/degenfrends/pump-bump/issues/new), or [join the discord](https://discord.gg/HUVAbet2Dp). 90 | -------------------------------------------------------------------------------- /dist/command/bump-command.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const get_token_account_1 = __importDefault(require("../solana/get-token-account")); 7 | const get_token_balance_1 = __importDefault(require("../solana/get-token-balance")); 8 | const pumpdotfun_sdk_1 = require("pumpdotfun-sdk"); 9 | const nodewallet_1 = __importDefault(require("@coral-xyz/anchor/dist/cjs/nodewallet")); 10 | const anchor_1 = require("@coral-xyz/anchor"); 11 | const dotenv_1 = require("dotenv"); 12 | const web3_js_1 = require("@solana/web3.js"); 13 | const bs58_1 = __importDefault(require("bs58")); 14 | (0, dotenv_1.config)(); 15 | class BumpCommand { 16 | bumperPrivateKey; 17 | mintAddress; 18 | walletAddress; 19 | provider; 20 | sdk; 21 | counter = 1; 22 | SLIPPAGE_BASIS_POINTS = 100n; 23 | buyTokens = async (sdk, testAccount, mint, solAmount) => { 24 | const buyResults = await sdk.buy(testAccount, mint, BigInt(solAmount * web3_js_1.LAMPORTS_PER_SOL), this.SLIPPAGE_BASIS_POINTS, { 25 | unitLimit: 250000, 26 | unitPrice: 250000 27 | }); 28 | console.log('Buy results:', buyResults); 29 | if (buyResults.success) { 30 | console.log('Buy successful', buyResults); 31 | } 32 | else { 33 | console.log('Buy failed'); 34 | } 35 | }; 36 | sellTokens = async (sdk, testAccount, mint, tokenAmount) => { 37 | const sellResults = await sdk.sell(testAccount, mint, BigInt(tokenAmount * Math.pow(10, pumpdotfun_sdk_1.DEFAULT_DECIMALS)), this.SLIPPAGE_BASIS_POINTS, { 38 | unitLimit: 250000, 39 | unitPrice: 250000 40 | }); 41 | if (sellResults.success) { 42 | console.log('Sell successful'); 43 | } 44 | else { 45 | console.log('Sell failed'); 46 | } 47 | }; 48 | getProvider = () => { 49 | if (!process.env.RPC_URL) { 50 | throw new Error('Please set HELIUS_RPC_URL in .env file'); 51 | } 52 | const connection = new web3_js_1.Connection(process.env.RPC_URL || ''); 53 | const wallet = new nodewallet_1.default(new web3_js_1.Keypair()); 54 | return new anchor_1.AnchorProvider(connection, wallet, { commitment: 'finalized' }); 55 | }; 56 | constructor(privateKey, mintAddress, walletAddress) { 57 | this.bumperPrivateKey = privateKey; 58 | this.mintAddress = mintAddress; 59 | this.walletAddress = walletAddress; 60 | this.provider = this.getProvider(); 61 | this.sdk = new pumpdotfun_sdk_1.PumpFunSDK(this.provider); 62 | } 63 | async main() { 64 | const tokenAccount = await (0, get_token_account_1.default)(this.walletAddress, this.mintAddress); 65 | const interval = Number(process.env.BUY_INTERVAL); 66 | setInterval(async () => { 67 | await this.bump(tokenAccount); 68 | }, interval * 1000); 69 | } 70 | async bump(tokenAccount) { 71 | console.log('Bumping token:', tokenAccount); 72 | const walletPrivateKey = await web3_js_1.Keypair.fromSecretKey(new Uint8Array(bs58_1.default.decode(this.bumperPrivateKey))); 73 | let solIn = Number(process.env.BUY_AMOUNT); 74 | try { 75 | let tokenBalance = 0; 76 | if (this.counter >= 2) { 77 | if (tokenAccount) { 78 | tokenBalance = await (0, get_token_balance_1.default)(tokenAccount); 79 | console.log('Token balance:', tokenBalance); 80 | this.counter = 0; 81 | } 82 | console.log('Selling token'); 83 | const sellRespponse = await this.sellTokens(this.sdk, walletPrivateKey, new web3_js_1.PublicKey(this.mintAddress), tokenBalance); 84 | console.log('sold token: ', sellRespponse); 85 | } 86 | console.log('Buying token'); 87 | const buyResponse = await this.buyTokens(this.sdk, walletPrivateKey, new web3_js_1.PublicKey(this.mintAddress), solIn); 88 | console.log('Bump successful: ', buyResponse); 89 | this.counter++; 90 | } 91 | catch (error) { 92 | console.error('Error in main function:', error); 93 | this.bump(tokenAccount); 94 | } 95 | } 96 | } 97 | exports.default = BumpCommand; 98 | -------------------------------------------------------------------------------- /dist/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const dotenv_1 = require("dotenv"); 7 | (0, dotenv_1.config)(); 8 | const bump_command_1 = __importDefault(require("./command/bump-command")); 9 | var argv = require('minimist')(process.argv.slice(2)); 10 | let privateKey; 11 | if (process.env.PRIVATE_KEY) { 12 | privateKey = process.env.PRIVATE_KEY; 13 | } 14 | else { 15 | privateKey = argv.privateKey; 16 | } 17 | const tokenAddress = argv.tokenAddress; 18 | const walletAddress = argv.walletAddress; 19 | const bumper = new bump_command_1.default(privateKey, tokenAddress, walletAddress); 20 | bumper.main(); 21 | -------------------------------------------------------------------------------- /dist/model/token.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | -------------------------------------------------------------------------------- /dist/model/user.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | -------------------------------------------------------------------------------- /dist/service/pumpfun/api.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | exports.getCoinData = void 0; 7 | const axios_1 = __importDefault(require("axios")); 8 | async function getCoinData(mintStr) { 9 | try { 10 | const url = `https://client-api-2-74b1891ee9f9.herokuapp.com/coins/${mintStr}`; 11 | const response = await axios_1.default.get(url, { 12 | headers: { 13 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0', 14 | Accept: '*/*', 15 | 'Accept-Language': 'en-US,en;q=0.5', 16 | 'Accept-Encoding': 'gzip, deflate, br', 17 | Referer: 'https://www.pump.fun/', 18 | Origin: 'https://www.pump.fun', 19 | Connection: 'keep-alive', 20 | 'Sec-Fetch-Dest': 'empty', 21 | 'Sec-Fetch-Mode': 'cors', 22 | 'Sec-Fetch-Site': 'cross-site', 23 | 'If-None-Match': 'W/"43a-tWaCcS4XujSi30IFlxDCJYxkMKg"' 24 | } 25 | }); 26 | if (response.status === 200) { 27 | return response.data; 28 | } 29 | else { 30 | console.error('Failed to retrieve coin data:', response.status); 31 | return null; 32 | } 33 | } 34 | catch (error) { 35 | console.error('Error fetching coin data:', error); 36 | return null; 37 | } 38 | } 39 | exports.getCoinData = getCoinData; 40 | -------------------------------------------------------------------------------- /dist/service/pumpfun/constants.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.SYSTEM_PROGRAM_ID = exports.PUMP_FUN_ACCOUNT = exports.PUMP_FUN_PROGRAM = exports.RENT = exports.ASSOC_TOKEN_ACC_PROG = exports.TOKEN_PROGRAM_ID = exports.FEE_RECIPIENT = exports.GLOBAL = void 0; 4 | const web3_js_1 = require("@solana/web3.js"); 5 | exports.GLOBAL = new web3_js_1.PublicKey('4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf'); 6 | exports.FEE_RECIPIENT = new web3_js_1.PublicKey('CebN5WGQ4jvEPvsVU4EoHEpgzq1VV7AbicfhtW4xC9iM'); 7 | exports.TOKEN_PROGRAM_ID = new web3_js_1.PublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'); 8 | exports.ASSOC_TOKEN_ACC_PROG = new web3_js_1.PublicKey('ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'); 9 | exports.RENT = new web3_js_1.PublicKey('SysvarRent111111111111111111111111111111111'); 10 | exports.PUMP_FUN_PROGRAM = new web3_js_1.PublicKey('6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P'); 11 | exports.PUMP_FUN_ACCOUNT = new web3_js_1.PublicKey('Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1'); 12 | exports.SYSTEM_PROGRAM_ID = web3_js_1.SystemProgram.programId; 13 | -------------------------------------------------------------------------------- /dist/service/pumpfun/swap.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.pumpFunSell = exports.pumpFunBuy = void 0; 4 | const web3_js_1 = require("@solana/web3.js"); 5 | const spl_token_1 = require("@solana/spl-token"); 6 | const utils_1 = require("./utils"); 7 | const api_1 = require("./api"); 8 | const types_1 = require("./types"); 9 | const constants_1 = require("./constants"); 10 | async function pumpFunBuy(transactionMode, payerPrivateKey, mintStr, solIn, priorityFeeInSol = 0, slippageDecimal = 0.25) { 11 | try { 12 | const connection = new web3_js_1.Connection((0, web3_js_1.clusterApiUrl)('mainnet-beta'), 'confirmed'); 13 | const coinData = await (0, api_1.getCoinData)(mintStr); 14 | if (!coinData) { 15 | console.error('Failed to retrieve coin data...'); 16 | return; 17 | } 18 | const payer = await (0, utils_1.getKeyPairFromPrivateKey)(payerPrivateKey); 19 | const owner = payer.publicKey; 20 | const mint = new web3_js_1.PublicKey(mintStr); 21 | const txBuilder = new web3_js_1.Transaction(); 22 | const tokenAccountAddress = await (0, spl_token_1.getAssociatedTokenAddress)(mint, owner, false); 23 | const tokenAccountInfo = await connection.getAccountInfo(tokenAccountAddress); 24 | let tokenAccount; 25 | if (!tokenAccountInfo) { 26 | txBuilder.add((0, spl_token_1.createAssociatedTokenAccountInstruction)(payer.publicKey, tokenAccountAddress, payer.publicKey, mint)); 27 | tokenAccount = tokenAccountAddress; 28 | } 29 | else { 30 | tokenAccount = tokenAccountAddress; 31 | } 32 | const solInLamports = solIn * web3_js_1.LAMPORTS_PER_SOL; 33 | const tokenOut = Math.floor((solInLamports * coinData['virtual_token_reserves']) / coinData['virtual_sol_reserves']); 34 | const solInWithSlippage = solIn * (1 + slippageDecimal); 35 | const maxSolCost = Math.floor(solInWithSlippage * web3_js_1.LAMPORTS_PER_SOL); 36 | const ASSOCIATED_USER = tokenAccount; 37 | const USER = owner; 38 | const BONDING_CURVE = new web3_js_1.PublicKey(coinData['bonding_curve']); 39 | const ASSOCIATED_BONDING_CURVE = new web3_js_1.PublicKey(coinData['associated_bonding_curve']); 40 | const keys = [ 41 | { pubkey: constants_1.GLOBAL, isSigner: false, isWritable: false }, 42 | { pubkey: constants_1.FEE_RECIPIENT, isSigner: false, isWritable: true }, 43 | { pubkey: mint, isSigner: false, isWritable: false }, 44 | { pubkey: BONDING_CURVE, isSigner: false, isWritable: true }, 45 | { pubkey: ASSOCIATED_BONDING_CURVE, isSigner: false, isWritable: true }, 46 | { pubkey: ASSOCIATED_USER, isSigner: false, isWritable: true }, 47 | { pubkey: USER, isSigner: false, isWritable: true }, 48 | { pubkey: constants_1.SYSTEM_PROGRAM_ID, isSigner: false, isWritable: false }, 49 | { pubkey: spl_token_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, 50 | { pubkey: constants_1.RENT, isSigner: false, isWritable: false }, 51 | { pubkey: constants_1.PUMP_FUN_ACCOUNT, isSigner: false, isWritable: false }, 52 | { pubkey: constants_1.PUMP_FUN_PROGRAM, isSigner: false, isWritable: false } 53 | ]; 54 | const data = Buffer.concat([(0, utils_1.bufferFromUInt64)('16927863322537952870'), (0, utils_1.bufferFromUInt64)(tokenOut), (0, utils_1.bufferFromUInt64)(maxSolCost)]); 55 | const instruction = new web3_js_1.TransactionInstruction({ 56 | keys: keys, 57 | programId: constants_1.PUMP_FUN_PROGRAM, 58 | data: data 59 | }); 60 | txBuilder.add(instruction); 61 | const transaction = await (0, utils_1.createTransaction)(connection, txBuilder.instructions, payer.publicKey, priorityFeeInSol); 62 | if (transactionMode == types_1.TransactionMode.Execution) { 63 | const signature = await (0, utils_1.sendAndConfirmTransactionWrapper)(connection, transaction, [payer]); 64 | console.log('Buy transaction confirmed:', signature); 65 | } 66 | else if (transactionMode == types_1.TransactionMode.Simulation) { 67 | const simulatedResult = await connection.simulateTransaction(transaction); 68 | console.log(simulatedResult); 69 | } 70 | } 71 | catch (error) { 72 | console.log(error); 73 | } 74 | } 75 | exports.pumpFunBuy = pumpFunBuy; 76 | async function pumpFunSell(transactionMode, payerPrivateKey, mintStr, tokenBalance, priorityFeeInSol = 0, slippageDecimal = 0.25) { 77 | try { 78 | const connection = new web3_js_1.Connection((0, web3_js_1.clusterApiUrl)('mainnet-beta'), 'confirmed'); 79 | const coinData = await (0, api_1.getCoinData)(mintStr); 80 | if (!coinData) { 81 | console.error('Failed to retrieve coin data...'); 82 | return; 83 | } 84 | const payer = await (0, utils_1.getKeyPairFromPrivateKey)(payerPrivateKey); 85 | const owner = payer.publicKey; 86 | const mint = new web3_js_1.PublicKey(mintStr); 87 | const txBuilder = new web3_js_1.Transaction(); 88 | const tokenAccountAddress = await (0, spl_token_1.getAssociatedTokenAddress)(mint, owner, false); 89 | const tokenAccountInfo = await connection.getAccountInfo(tokenAccountAddress); 90 | let tokenAccount; 91 | if (!tokenAccountInfo) { 92 | txBuilder.add((0, spl_token_1.createAssociatedTokenAccountInstruction)(payer.publicKey, tokenAccountAddress, payer.publicKey, mint)); 93 | tokenAccount = tokenAccountAddress; 94 | } 95 | else { 96 | tokenAccount = tokenAccountAddress; 97 | } 98 | const minSolOutput = Math.floor((tokenBalance * (1 - slippageDecimal) * coinData['virtual_sol_reserves']) / coinData['virtual_token_reserves']); 99 | const keys = [ 100 | { pubkey: constants_1.GLOBAL, isSigner: false, isWritable: false }, 101 | { pubkey: constants_1.FEE_RECIPIENT, isSigner: false, isWritable: true }, 102 | { pubkey: mint, isSigner: false, isWritable: false }, 103 | { pubkey: new web3_js_1.PublicKey(coinData['bonding_curve']), isSigner: false, isWritable: true }, 104 | { pubkey: new web3_js_1.PublicKey(coinData['associated_bonding_curve']), isSigner: false, isWritable: true }, 105 | { pubkey: tokenAccount, isSigner: false, isWritable: true }, 106 | { pubkey: owner, isSigner: false, isWritable: true }, 107 | { pubkey: constants_1.SYSTEM_PROGRAM_ID, isSigner: false, isWritable: false }, 108 | { pubkey: constants_1.ASSOC_TOKEN_ACC_PROG, isSigner: false, isWritable: false }, 109 | { pubkey: spl_token_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, 110 | { pubkey: constants_1.PUMP_FUN_ACCOUNT, isSigner: false, isWritable: false }, 111 | { pubkey: constants_1.PUMP_FUN_PROGRAM, isSigner: false, isWritable: false } 112 | ]; 113 | const data = Buffer.concat([(0, utils_1.bufferFromUInt64)('12502976635542562355'), (0, utils_1.bufferFromUInt64)(tokenBalance), (0, utils_1.bufferFromUInt64)(minSolOutput)]); 114 | const instruction = new web3_js_1.TransactionInstruction({ 115 | keys: keys, 116 | programId: constants_1.PUMP_FUN_PROGRAM, 117 | data: data 118 | }); 119 | txBuilder.add(instruction); 120 | const transaction = await (0, utils_1.createTransaction)(connection, txBuilder.instructions, payer.publicKey, priorityFeeInSol); 121 | if (transactionMode == types_1.TransactionMode.Execution) { 122 | const signature = await (0, utils_1.sendAndConfirmTransactionWrapper)(connection, transaction, [payer]); 123 | console.log('Sell transaction confirmed:', signature); 124 | } 125 | else if (transactionMode == types_1.TransactionMode.Simulation) { 126 | const simulatedResult = await connection.simulateTransaction(transaction); 127 | console.log(simulatedResult); 128 | } 129 | } 130 | catch (error) { 131 | console.log(error); 132 | } 133 | } 134 | exports.pumpFunSell = pumpFunSell; 135 | -------------------------------------------------------------------------------- /dist/service/pumpfun/types.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.TransactionMode = void 0; 4 | var TransactionMode; 5 | (function (TransactionMode) { 6 | TransactionMode[TransactionMode["Simulation"] = 0] = "Simulation"; 7 | TransactionMode[TransactionMode["Execution"] = 1] = "Execution"; 8 | })(TransactionMode || (exports.TransactionMode = TransactionMode = {})); 9 | -------------------------------------------------------------------------------- /dist/service/pumpfun/utils.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | exports.bufferFromUInt64 = exports.sendAndConfirmTransactionWrapper = exports.createTransaction = exports.getKeyPairFromPrivateKey = void 0; 7 | const web3_js_1 = require("@solana/web3.js"); 8 | const web3_js_2 = require("@solana/web3.js"); 9 | const bs58_1 = __importDefault(require("bs58")); 10 | async function getKeyPairFromPrivateKey(key) { 11 | return web3_js_1.Keypair.fromSecretKey(new Uint8Array(bs58_1.default.decode(key))); 12 | } 13 | exports.getKeyPairFromPrivateKey = getKeyPairFromPrivateKey; 14 | async function createTransaction(connection, instructions, payer, priorityFeeInSol = 0) { 15 | const modifyComputeUnits = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ 16 | units: 1400000 17 | }); 18 | const transaction = new web3_js_2.Transaction().add(modifyComputeUnits); 19 | if (priorityFeeInSol > 0) { 20 | const microLamports = priorityFeeInSol * 1_000_000_000; // convert SOL to microLamports 21 | const addPriorityFee = web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({ 22 | microLamports 23 | }); 24 | transaction.add(addPriorityFee); 25 | } 26 | transaction.add(...instructions); 27 | transaction.feePayer = payer; 28 | transaction.recentBlockhash = (await connection.getRecentBlockhash()).blockhash; 29 | return transaction; 30 | } 31 | exports.createTransaction = createTransaction; 32 | async function sendAndConfirmTransactionWrapper(connection, transaction, signers) { 33 | try { 34 | const signature = await (0, web3_js_2.sendAndConfirmTransaction)(connection, transaction, signers, { 35 | skipPreflight: true, 36 | preflightCommitment: 'confirmed' 37 | }); 38 | console.log('Transaction confirmed with signature:', signature); 39 | return signature; 40 | } 41 | catch (error) { 42 | console.error('Error sending transaction:', error); 43 | return null; 44 | } 45 | } 46 | exports.sendAndConfirmTransactionWrapper = sendAndConfirmTransactionWrapper; 47 | function bufferFromUInt64(value) { 48 | let buffer = Buffer.alloc(8); 49 | buffer.writeBigUInt64LE(BigInt(value)); 50 | return buffer; 51 | } 52 | exports.bufferFromUInt64 = bufferFromUInt64; 53 | -------------------------------------------------------------------------------- /dist/service/solana/get-balance.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const web3_js_1 = require("@solana/web3.js"); 4 | async function getBalance(walletAddress) { 5 | const connection = new web3_js_1.Connection((0, web3_js_1.clusterApiUrl)('mainnet-beta'), 'confirmed'); 6 | const wallet = new web3_js_1.PublicKey(walletAddress); 7 | const info = await connection.getBalance(wallet); 8 | let lamportBalance = info / web3_js_1.LAMPORTS_PER_SOL; 9 | return lamportBalance; 10 | } 11 | exports.default = getBalance; 12 | -------------------------------------------------------------------------------- /dist/service/solana/get-token-account.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const web3_js_1 = require("@solana/web3.js"); 4 | async function getTokenAccount(walletAddress, mintAddress) { 5 | const connection = new web3_js_1.Connection((0, web3_js_1.clusterApiUrl)('mainnet-beta'), 'confirmed'); 6 | const wallet = new web3_js_1.PublicKey(walletAddress); 7 | console.log('Wallet:', wallet); 8 | const account = await connection.getTokenAccountsByOwner(wallet, { 9 | mint: new web3_js_1.PublicKey(mintAddress) 10 | }); 11 | console.log(account); 12 | const tokenAccount = account.value[0].pubkey.toString(); 13 | console.log(tokenAccount); 14 | return tokenAccount; 15 | } 16 | exports.default = getTokenAccount; 17 | -------------------------------------------------------------------------------- /dist/service/solana/get-token-balance.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const web3_js_1 = require("@solana/web3.js"); 4 | const { getAccount, getMint } = require('@solana/spl-token'); 5 | async function getTokenBalance(tokenAccount) { 6 | const connection = new web3_js_1.Connection((0, web3_js_1.clusterApiUrl)('mainnet-beta'), 'confirmed'); 7 | const tokenWallet = new web3_js_1.PublicKey(tokenAccount); 8 | const info = await getAccount(connection, tokenWallet); 9 | const amount = Number(info.amount); 10 | const mint = await getMint(connection, info.mint); 11 | const balance = amount / 10 ** mint.decimals; 12 | return balance; 13 | } 14 | exports.default = getTokenBalance; 15 | -------------------------------------------------------------------------------- /dist/solana/get-balance.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.default = getBalance; 4 | const web3_js_1 = require("@solana/web3.js"); 5 | const dotenv_1 = require("dotenv"); 6 | (0, dotenv_1.config)(); 7 | async function getBalance(walletAddress) { 8 | const connection = new web3_js_1.Connection(String(process.env.RPC_URL), 'confirmed'); 9 | const wallet = new web3_js_1.PublicKey(walletAddress); 10 | const info = await connection.getBalance(wallet); 11 | let lamportBalance = info / web3_js_1.LAMPORTS_PER_SOL; 12 | return lamportBalance; 13 | } 14 | -------------------------------------------------------------------------------- /dist/solana/get-token-account.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.default = getTokenAccount; 4 | const web3_js_1 = require("@solana/web3.js"); 5 | const dotenv_1 = require("dotenv"); 6 | (0, dotenv_1.config)(); 7 | async function getTokenAccount(walletAddress, mintAddress) { 8 | const connection = new web3_js_1.Connection(String(process.env.RPC_URL), 'confirmed'); 9 | const wallet = new web3_js_1.PublicKey(walletAddress); 10 | const account = await connection.getTokenAccountsByOwner(wallet, { 11 | mint: new web3_js_1.PublicKey(mintAddress) 12 | }); 13 | if (!account.value) { 14 | return undefined; 15 | } 16 | return account.value[0]?.pubkey?.toString() || undefined; 17 | } 18 | -------------------------------------------------------------------------------- /dist/solana/get-token-balance.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.default = getTokenBalance; 4 | const web3_js_1 = require("@solana/web3.js"); 5 | const dotenv_1 = require("dotenv"); 6 | const spl_token_1 = require("@solana/spl-token"); 7 | (0, dotenv_1.config)(); 8 | async function getTokenBalance(tokenAccount) { 9 | const connection = new web3_js_1.Connection(String(process.env.RPC_URL), 'confirmed'); 10 | const tokenWallet = new web3_js_1.PublicKey(tokenAccount); 11 | const info = await (0, spl_token_1.getAccount)(connection, tokenWallet); 12 | const amount = Number(info.amount); 13 | const mint = await (0, spl_token_1.getMint)(connection, info.mint); 14 | const balance = amount / 10 ** mint.decimals; 15 | return balance; 16 | } 17 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@degenfrends/pump-bump-bot", 3 | "version": "0.0.1", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "@degenfrends/pump-bump-bot", 9 | "version": "0.0.1", 10 | "license": "ISC", 11 | "dependencies": { 12 | "@degenfrends/solana-pumpfun-trader": "^0.0.16", 13 | "@solana/spl-token": "0.4.6", 14 | "@solana/web3.js": "^1.92.0", 15 | "axios": "^1.7.2", 16 | "bs58": "^5.0.0", 17 | "dotenv": "^16.4.5", 18 | "minimist": "^1.2.8", 19 | "pumpdotfun-sdk": "^1.3.2" 20 | }, 21 | "devDependencies": { 22 | "@types/node": "^20.14.1", 23 | "nodemon": "^3.1.3", 24 | "ts-node": "^10.9.2" 25 | } 26 | }, 27 | "node_modules/@babel/runtime": { 28 | "version": "7.24.7", 29 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", 30 | "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", 31 | "license": "MIT", 32 | "dependencies": { 33 | "regenerator-runtime": "^0.14.0" 34 | }, 35 | "engines": { 36 | "node": ">=6.9.0" 37 | } 38 | }, 39 | "node_modules/@coral-xyz/anchor": { 40 | "version": "0.30.1", 41 | "resolved": "https://registry.npmjs.org/@coral-xyz/anchor/-/anchor-0.30.1.tgz", 42 | "integrity": "sha512-gDXFoF5oHgpriXAaLpxyWBHdCs8Awgf/gLHIo6crv7Aqm937CNdY+x+6hoj7QR5vaJV7MxWSQ0NGFzL3kPbWEQ==", 43 | "license": "(MIT OR Apache-2.0)", 44 | "dependencies": { 45 | "@coral-xyz/anchor-errors": "^0.30.1", 46 | "@coral-xyz/borsh": "^0.30.1", 47 | "@noble/hashes": "^1.3.1", 48 | "@solana/web3.js": "^1.68.0", 49 | "bn.js": "^5.1.2", 50 | "bs58": "^4.0.1", 51 | "buffer-layout": "^1.2.2", 52 | "camelcase": "^6.3.0", 53 | "cross-fetch": "^3.1.5", 54 | "crypto-hash": "^1.3.0", 55 | "eventemitter3": "^4.0.7", 56 | "pako": "^2.0.3", 57 | "snake-case": "^3.0.4", 58 | "superstruct": "^0.15.4", 59 | "toml": "^3.0.0" 60 | }, 61 | "engines": { 62 | "node": ">=11" 63 | } 64 | }, 65 | "node_modules/@coral-xyz/anchor-errors": { 66 | "version": "0.30.1", 67 | "resolved": "https://registry.npmjs.org/@coral-xyz/anchor-errors/-/anchor-errors-0.30.1.tgz", 68 | "integrity": "sha512-9Mkradf5yS5xiLWrl9WrpjqOrAV+/W2RQHDlbnAZBivoGpOs1ECjoDCkVk4aRG8ZdiFiB8zQEVlxf+8fKkmSfQ==", 69 | "license": "Apache-2.0", 70 | "engines": { 71 | "node": ">=10" 72 | } 73 | }, 74 | "node_modules/@coral-xyz/anchor/node_modules/base-x": { 75 | "version": "3.0.9", 76 | "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", 77 | "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", 78 | "license": "MIT", 79 | "dependencies": { 80 | "safe-buffer": "^5.0.1" 81 | } 82 | }, 83 | "node_modules/@coral-xyz/anchor/node_modules/bs58": { 84 | "version": "4.0.1", 85 | "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", 86 | "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", 87 | "license": "MIT", 88 | "dependencies": { 89 | "base-x": "^3.0.2" 90 | } 91 | }, 92 | "node_modules/@coral-xyz/anchor/node_modules/superstruct": { 93 | "version": "0.15.5", 94 | "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.15.5.tgz", 95 | "integrity": "sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==", 96 | "license": "MIT" 97 | }, 98 | "node_modules/@coral-xyz/borsh": { 99 | "version": "0.30.1", 100 | "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.30.1.tgz", 101 | "integrity": "sha512-aaxswpPrCFKl8vZTbxLssA2RvwX2zmKLlRCIktJOwW+VpVwYtXRtlWiIP+c2pPRKneiTiWCN2GEMSH9j1zTlWQ==", 102 | "license": "Apache-2.0", 103 | "dependencies": { 104 | "bn.js": "^5.1.2", 105 | "buffer-layout": "^1.2.0" 106 | }, 107 | "engines": { 108 | "node": ">=10" 109 | }, 110 | "peerDependencies": { 111 | "@solana/web3.js": "^1.68.0" 112 | } 113 | }, 114 | "node_modules/@cspotcode/source-map-support": { 115 | "version": "0.8.1", 116 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", 117 | "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", 118 | "dev": true, 119 | "license": "MIT", 120 | "dependencies": { 121 | "@jridgewell/trace-mapping": "0.3.9" 122 | }, 123 | "engines": { 124 | "node": ">=12" 125 | } 126 | }, 127 | "node_modules/@degenfrends/solana-pumpfun-trader": { 128 | "version": "0.0.16", 129 | "resolved": "https://registry.npmjs.org/@degenfrends/solana-pumpfun-trader/-/solana-pumpfun-trader-0.0.16.tgz", 130 | "integrity": "sha512-wykfi77g1GSBdwrcgqZv+JufSCQ12AYr46jFY7K54SCbg92g78jyiRezTu44SLVtCuc4ne2p2ogOjphXAL5/jQ==", 131 | "license": "ISC", 132 | "dependencies": { 133 | "@solana/spl-token": "^0.4.6", 134 | "@solana/web3.js": "^1.93.1", 135 | "axios": "^1.7.2", 136 | "bs58": "^5.0.0", 137 | "dotenv": "^16.4.5" 138 | } 139 | }, 140 | "node_modules/@jridgewell/resolve-uri": { 141 | "version": "3.1.2", 142 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 143 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 144 | "dev": true, 145 | "license": "MIT", 146 | "engines": { 147 | "node": ">=6.0.0" 148 | } 149 | }, 150 | "node_modules/@jridgewell/sourcemap-codec": { 151 | "version": "1.4.15", 152 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 153 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 154 | "dev": true, 155 | "license": "MIT" 156 | }, 157 | "node_modules/@jridgewell/trace-mapping": { 158 | "version": "0.3.9", 159 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", 160 | "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", 161 | "dev": true, 162 | "license": "MIT", 163 | "dependencies": { 164 | "@jridgewell/resolve-uri": "^3.0.3", 165 | "@jridgewell/sourcemap-codec": "^1.4.10" 166 | } 167 | }, 168 | "node_modules/@noble/curves": { 169 | "version": "1.4.0", 170 | "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.0.tgz", 171 | "integrity": "sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==", 172 | "license": "MIT", 173 | "dependencies": { 174 | "@noble/hashes": "1.4.0" 175 | }, 176 | "funding": { 177 | "url": "https://paulmillr.com/funding/" 178 | } 179 | }, 180 | "node_modules/@noble/hashes": { 181 | "version": "1.4.0", 182 | "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", 183 | "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", 184 | "license": "MIT", 185 | "engines": { 186 | "node": ">= 16" 187 | }, 188 | "funding": { 189 | "url": "https://paulmillr.com/funding/" 190 | } 191 | }, 192 | "node_modules/@rollup/plugin-json": { 193 | "version": "6.1.0", 194 | "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", 195 | "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", 196 | "license": "MIT", 197 | "dependencies": { 198 | "@rollup/pluginutils": "^5.1.0" 199 | }, 200 | "engines": { 201 | "node": ">=14.0.0" 202 | }, 203 | "peerDependencies": { 204 | "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" 205 | }, 206 | "peerDependenciesMeta": { 207 | "rollup": { 208 | "optional": true 209 | } 210 | } 211 | }, 212 | "node_modules/@rollup/pluginutils": { 213 | "version": "5.1.0", 214 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", 215 | "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", 216 | "license": "MIT", 217 | "dependencies": { 218 | "@types/estree": "^1.0.0", 219 | "estree-walker": "^2.0.2", 220 | "picomatch": "^2.3.1" 221 | }, 222 | "engines": { 223 | "node": ">=14.0.0" 224 | }, 225 | "peerDependencies": { 226 | "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" 227 | }, 228 | "peerDependenciesMeta": { 229 | "rollup": { 230 | "optional": true 231 | } 232 | } 233 | }, 234 | "node_modules/@solana/buffer-layout": { 235 | "version": "4.0.1", 236 | "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz", 237 | "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", 238 | "license": "MIT", 239 | "dependencies": { 240 | "buffer": "~6.0.3" 241 | }, 242 | "engines": { 243 | "node": ">=5.10" 244 | } 245 | }, 246 | "node_modules/@solana/buffer-layout-utils": { 247 | "version": "0.2.0", 248 | "resolved": "https://registry.npmjs.org/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz", 249 | "integrity": "sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==", 250 | "license": "Apache-2.0", 251 | "dependencies": { 252 | "@solana/buffer-layout": "^4.0.0", 253 | "@solana/web3.js": "^1.32.0", 254 | "bigint-buffer": "^1.1.5", 255 | "bignumber.js": "^9.0.1" 256 | }, 257 | "engines": { 258 | "node": ">= 10" 259 | } 260 | }, 261 | "node_modules/@solana/codecs": { 262 | "version": "2.0.0-preview.2", 263 | "resolved": "https://registry.npmjs.org/@solana/codecs/-/codecs-2.0.0-preview.2.tgz", 264 | "integrity": "sha512-4HHzCD5+pOSmSB71X6w9ptweV48Zj1Vqhe732+pcAQ2cMNnN0gMPMdDq7j3YwaZDZ7yrILVV/3+HTnfT77t2yA==", 265 | "license": "MIT", 266 | "dependencies": { 267 | "@solana/codecs-core": "2.0.0-preview.2", 268 | "@solana/codecs-data-structures": "2.0.0-preview.2", 269 | "@solana/codecs-numbers": "2.0.0-preview.2", 270 | "@solana/codecs-strings": "2.0.0-preview.2", 271 | "@solana/options": "2.0.0-preview.2" 272 | } 273 | }, 274 | "node_modules/@solana/codecs-core": { 275 | "version": "2.0.0-preview.2", 276 | "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.0.0-preview.2.tgz", 277 | "integrity": "sha512-gLhCJXieSCrAU7acUJjbXl+IbGnqovvxQLlimztPoGgfLQ1wFYu+XJswrEVQqknZYK1pgxpxH3rZ+OKFs0ndQg==", 278 | "license": "MIT", 279 | "dependencies": { 280 | "@solana/errors": "2.0.0-preview.2" 281 | } 282 | }, 283 | "node_modules/@solana/codecs-data-structures": { 284 | "version": "2.0.0-preview.2", 285 | "resolved": "https://registry.npmjs.org/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.2.tgz", 286 | "integrity": "sha512-Xf5vIfromOZo94Q8HbR04TbgTwzigqrKII0GjYr21K7rb3nba4hUW2ir8kguY7HWFBcjHGlU5x3MevKBOLp3Zg==", 287 | "license": "MIT", 288 | "dependencies": { 289 | "@solana/codecs-core": "2.0.0-preview.2", 290 | "@solana/codecs-numbers": "2.0.0-preview.2", 291 | "@solana/errors": "2.0.0-preview.2" 292 | } 293 | }, 294 | "node_modules/@solana/codecs-numbers": { 295 | "version": "2.0.0-preview.2", 296 | "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.2.tgz", 297 | "integrity": "sha512-aLZnDTf43z4qOnpTcDsUVy1Ci9im1Md8thWipSWbE+WM9ojZAx528oAql+Cv8M8N+6ALKwgVRhPZkto6E59ARw==", 298 | "license": "MIT", 299 | "dependencies": { 300 | "@solana/codecs-core": "2.0.0-preview.2", 301 | "@solana/errors": "2.0.0-preview.2" 302 | } 303 | }, 304 | "node_modules/@solana/codecs-strings": { 305 | "version": "2.0.0-preview.2", 306 | "resolved": "https://registry.npmjs.org/@solana/codecs-strings/-/codecs-strings-2.0.0-preview.2.tgz", 307 | "integrity": "sha512-EgBwY+lIaHHgMJIqVOGHfIfpdmmUDNoNO/GAUGeFPf+q0dF+DtwhJPEMShhzh64X2MeCZcmSO6Kinx0Bvmmz2g==", 308 | "license": "MIT", 309 | "dependencies": { 310 | "@solana/codecs-core": "2.0.0-preview.2", 311 | "@solana/codecs-numbers": "2.0.0-preview.2", 312 | "@solana/errors": "2.0.0-preview.2" 313 | }, 314 | "peerDependencies": { 315 | "fastestsmallesttextencoderdecoder": "^1.0.22" 316 | } 317 | }, 318 | "node_modules/@solana/errors": { 319 | "version": "2.0.0-preview.2", 320 | "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-2.0.0-preview.2.tgz", 321 | "integrity": "sha512-H2DZ1l3iYF5Rp5pPbJpmmtCauWeQXRJapkDg8epQ8BJ7cA2Ut/QEtC3CMmw/iMTcuS6uemFNLcWvlOfoQhvQuA==", 322 | "license": "MIT", 323 | "dependencies": { 324 | "chalk": "^5.3.0", 325 | "commander": "^12.0.0" 326 | }, 327 | "bin": { 328 | "errors": "bin/cli.js" 329 | } 330 | }, 331 | "node_modules/@solana/options": { 332 | "version": "2.0.0-preview.2", 333 | "resolved": "https://registry.npmjs.org/@solana/options/-/options-2.0.0-preview.2.tgz", 334 | "integrity": "sha512-FAHqEeH0cVsUOTzjl5OfUBw2cyT8d5Oekx4xcn5hn+NyPAfQJgM3CEThzgRD6Q/4mM5pVUnND3oK/Mt1RzSE/w==", 335 | "license": "MIT", 336 | "dependencies": { 337 | "@solana/codecs-core": "2.0.0-preview.2", 338 | "@solana/codecs-numbers": "2.0.0-preview.2" 339 | } 340 | }, 341 | "node_modules/@solana/spl-token": { 342 | "version": "0.4.6", 343 | "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.4.6.tgz", 344 | "integrity": "sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA==", 345 | "license": "Apache-2.0", 346 | "dependencies": { 347 | "@solana/buffer-layout": "^4.0.0", 348 | "@solana/buffer-layout-utils": "^0.2.0", 349 | "@solana/spl-token-group": "^0.0.4", 350 | "@solana/spl-token-metadata": "^0.1.4", 351 | "buffer": "^6.0.3" 352 | }, 353 | "engines": { 354 | "node": ">=16" 355 | }, 356 | "peerDependencies": { 357 | "@solana/web3.js": "^1.91.6" 358 | } 359 | }, 360 | "node_modules/@solana/spl-token-group": { 361 | "version": "0.0.4", 362 | "resolved": "https://registry.npmjs.org/@solana/spl-token-group/-/spl-token-group-0.0.4.tgz", 363 | "integrity": "sha512-7+80nrEMdUKlK37V6kOe024+T7J4nNss0F8LQ9OOPYdWCCfJmsGUzVx2W3oeizZR4IHM6N4yC9v1Xqwc3BTPWw==", 364 | "license": "Apache-2.0", 365 | "dependencies": { 366 | "@solana/codecs": "2.0.0-preview.2", 367 | "@solana/spl-type-length-value": "0.1.0" 368 | }, 369 | "engines": { 370 | "node": ">=16" 371 | }, 372 | "peerDependencies": { 373 | "@solana/web3.js": "^1.91.6" 374 | } 375 | }, 376 | "node_modules/@solana/spl-token-metadata": { 377 | "version": "0.1.4", 378 | "resolved": "https://registry.npmjs.org/@solana/spl-token-metadata/-/spl-token-metadata-0.1.4.tgz", 379 | "integrity": "sha512-N3gZ8DlW6NWDV28+vCCDJoTqaCZiF/jDUnk3o8GRkAFzHObiR60Bs1gXHBa8zCPdvOwiG6Z3dg5pg7+RW6XNsQ==", 380 | "license": "Apache-2.0", 381 | "dependencies": { 382 | "@solana/codecs": "2.0.0-preview.2", 383 | "@solana/spl-type-length-value": "0.1.0" 384 | }, 385 | "engines": { 386 | "node": ">=16" 387 | }, 388 | "peerDependencies": { 389 | "@solana/web3.js": "^1.91.6" 390 | } 391 | }, 392 | "node_modules/@solana/spl-type-length-value": { 393 | "version": "0.1.0", 394 | "resolved": "https://registry.npmjs.org/@solana/spl-type-length-value/-/spl-type-length-value-0.1.0.tgz", 395 | "integrity": "sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA==", 396 | "license": "Apache-2.0", 397 | "dependencies": { 398 | "buffer": "^6.0.3" 399 | }, 400 | "engines": { 401 | "node": ">=16" 402 | } 403 | }, 404 | "node_modules/@solana/web3.js": { 405 | "version": "1.94.0", 406 | "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.94.0.tgz", 407 | "integrity": "sha512-wMiBebzu5I2fTSz623uj6VXpWFhl0d7qJKqPFK2I4IBLTNUdv+bOeA4H7OBM7Gworv7sOvB3xibRql6l61MeqA==", 408 | "license": "MIT", 409 | "dependencies": { 410 | "@babel/runtime": "^7.24.7", 411 | "@noble/curves": "^1.4.0", 412 | "@noble/hashes": "^1.4.0", 413 | "@solana/buffer-layout": "^4.0.1", 414 | "agentkeepalive": "^4.5.0", 415 | "bigint-buffer": "^1.1.5", 416 | "bn.js": "^5.2.1", 417 | "borsh": "^0.7.0", 418 | "bs58": "^4.0.1", 419 | "buffer": "6.0.3", 420 | "fast-stable-stringify": "^1.0.0", 421 | "jayson": "^4.1.0", 422 | "node-fetch": "^2.7.0", 423 | "rpc-websockets": "^9.0.2", 424 | "superstruct": "^1.0.4" 425 | } 426 | }, 427 | "node_modules/@solana/web3.js/node_modules/base-x": { 428 | "version": "3.0.9", 429 | "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", 430 | "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", 431 | "license": "MIT", 432 | "dependencies": { 433 | "safe-buffer": "^5.0.1" 434 | } 435 | }, 436 | "node_modules/@solana/web3.js/node_modules/bs58": { 437 | "version": "4.0.1", 438 | "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", 439 | "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", 440 | "license": "MIT", 441 | "dependencies": { 442 | "base-x": "^3.0.2" 443 | } 444 | }, 445 | "node_modules/@swc/helpers": { 446 | "version": "0.5.11", 447 | "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.11.tgz", 448 | "integrity": "sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==", 449 | "license": "Apache-2.0", 450 | "dependencies": { 451 | "tslib": "^2.4.0" 452 | } 453 | }, 454 | "node_modules/@tsconfig/node10": { 455 | "version": "1.0.11", 456 | "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", 457 | "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", 458 | "dev": true, 459 | "license": "MIT" 460 | }, 461 | "node_modules/@tsconfig/node12": { 462 | "version": "1.0.11", 463 | "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", 464 | "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", 465 | "dev": true, 466 | "license": "MIT" 467 | }, 468 | "node_modules/@tsconfig/node14": { 469 | "version": "1.0.3", 470 | "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", 471 | "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", 472 | "dev": true, 473 | "license": "MIT" 474 | }, 475 | "node_modules/@tsconfig/node16": { 476 | "version": "1.0.4", 477 | "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", 478 | "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", 479 | "dev": true, 480 | "license": "MIT" 481 | }, 482 | "node_modules/@types/connect": { 483 | "version": "3.4.38", 484 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", 485 | "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", 486 | "license": "MIT", 487 | "dependencies": { 488 | "@types/node": "*" 489 | } 490 | }, 491 | "node_modules/@types/estree": { 492 | "version": "1.0.5", 493 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", 494 | "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", 495 | "license": "MIT" 496 | }, 497 | "node_modules/@types/node": { 498 | "version": "20.14.9", 499 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", 500 | "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", 501 | "license": "MIT", 502 | "dependencies": { 503 | "undici-types": "~5.26.4" 504 | } 505 | }, 506 | "node_modules/@types/uuid": { 507 | "version": "8.3.4", 508 | "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", 509 | "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", 510 | "license": "MIT" 511 | }, 512 | "node_modules/@types/ws": { 513 | "version": "7.4.7", 514 | "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", 515 | "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", 516 | "license": "MIT", 517 | "dependencies": { 518 | "@types/node": "*" 519 | } 520 | }, 521 | "node_modules/acorn": { 522 | "version": "8.12.0", 523 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", 524 | "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", 525 | "dev": true, 526 | "license": "MIT", 527 | "bin": { 528 | "acorn": "bin/acorn" 529 | }, 530 | "engines": { 531 | "node": ">=0.4.0" 532 | } 533 | }, 534 | "node_modules/acorn-walk": { 535 | "version": "8.3.3", 536 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", 537 | "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", 538 | "dev": true, 539 | "license": "MIT", 540 | "dependencies": { 541 | "acorn": "^8.11.0" 542 | }, 543 | "engines": { 544 | "node": ">=0.4.0" 545 | } 546 | }, 547 | "node_modules/agentkeepalive": { 548 | "version": "4.5.0", 549 | "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", 550 | "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", 551 | "license": "MIT", 552 | "dependencies": { 553 | "humanize-ms": "^1.2.1" 554 | }, 555 | "engines": { 556 | "node": ">= 8.0.0" 557 | } 558 | }, 559 | "node_modules/anymatch": { 560 | "version": "3.1.3", 561 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 562 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 563 | "dev": true, 564 | "license": "ISC", 565 | "dependencies": { 566 | "normalize-path": "^3.0.0", 567 | "picomatch": "^2.0.4" 568 | }, 569 | "engines": { 570 | "node": ">= 8" 571 | } 572 | }, 573 | "node_modules/arg": { 574 | "version": "4.1.3", 575 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", 576 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", 577 | "dev": true, 578 | "license": "MIT" 579 | }, 580 | "node_modules/asynckit": { 581 | "version": "0.4.0", 582 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 583 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", 584 | "license": "MIT" 585 | }, 586 | "node_modules/axios": { 587 | "version": "1.7.2", 588 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", 589 | "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", 590 | "license": "MIT", 591 | "dependencies": { 592 | "follow-redirects": "^1.15.6", 593 | "form-data": "^4.0.0", 594 | "proxy-from-env": "^1.1.0" 595 | } 596 | }, 597 | "node_modules/balanced-match": { 598 | "version": "1.0.2", 599 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 600 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 601 | "dev": true, 602 | "license": "MIT" 603 | }, 604 | "node_modules/base-x": { 605 | "version": "4.0.0", 606 | "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", 607 | "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==", 608 | "license": "MIT" 609 | }, 610 | "node_modules/base64-js": { 611 | "version": "1.5.1", 612 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 613 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 614 | "funding": [ 615 | { 616 | "type": "github", 617 | "url": "https://github.com/sponsors/feross" 618 | }, 619 | { 620 | "type": "patreon", 621 | "url": "https://www.patreon.com/feross" 622 | }, 623 | { 624 | "type": "consulting", 625 | "url": "https://feross.org/support" 626 | } 627 | ], 628 | "license": "MIT" 629 | }, 630 | "node_modules/bigint-buffer": { 631 | "version": "1.1.5", 632 | "resolved": "https://registry.npmjs.org/bigint-buffer/-/bigint-buffer-1.1.5.tgz", 633 | "integrity": "sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==", 634 | "hasInstallScript": true, 635 | "license": "Apache-2.0", 636 | "dependencies": { 637 | "bindings": "^1.3.0" 638 | }, 639 | "engines": { 640 | "node": ">= 10.0.0" 641 | } 642 | }, 643 | "node_modules/bignumber.js": { 644 | "version": "9.1.2", 645 | "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", 646 | "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", 647 | "license": "MIT", 648 | "engines": { 649 | "node": "*" 650 | } 651 | }, 652 | "node_modules/binary-extensions": { 653 | "version": "2.3.0", 654 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", 655 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", 656 | "dev": true, 657 | "license": "MIT", 658 | "engines": { 659 | "node": ">=8" 660 | }, 661 | "funding": { 662 | "url": "https://github.com/sponsors/sindresorhus" 663 | } 664 | }, 665 | "node_modules/bindings": { 666 | "version": "1.5.0", 667 | "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", 668 | "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", 669 | "license": "MIT", 670 | "dependencies": { 671 | "file-uri-to-path": "1.0.0" 672 | } 673 | }, 674 | "node_modules/bn.js": { 675 | "version": "5.2.1", 676 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", 677 | "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", 678 | "license": "MIT" 679 | }, 680 | "node_modules/borsh": { 681 | "version": "0.7.0", 682 | "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", 683 | "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", 684 | "license": "Apache-2.0", 685 | "dependencies": { 686 | "bn.js": "^5.2.0", 687 | "bs58": "^4.0.0", 688 | "text-encoding-utf-8": "^1.0.2" 689 | } 690 | }, 691 | "node_modules/borsh/node_modules/base-x": { 692 | "version": "3.0.9", 693 | "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", 694 | "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", 695 | "license": "MIT", 696 | "dependencies": { 697 | "safe-buffer": "^5.0.1" 698 | } 699 | }, 700 | "node_modules/borsh/node_modules/bs58": { 701 | "version": "4.0.1", 702 | "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", 703 | "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", 704 | "license": "MIT", 705 | "dependencies": { 706 | "base-x": "^3.0.2" 707 | } 708 | }, 709 | "node_modules/brace-expansion": { 710 | "version": "1.1.11", 711 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 712 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 713 | "dev": true, 714 | "license": "MIT", 715 | "dependencies": { 716 | "balanced-match": "^1.0.0", 717 | "concat-map": "0.0.1" 718 | } 719 | }, 720 | "node_modules/braces": { 721 | "version": "3.0.3", 722 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 723 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 724 | "dev": true, 725 | "license": "MIT", 726 | "dependencies": { 727 | "fill-range": "^7.1.1" 728 | }, 729 | "engines": { 730 | "node": ">=8" 731 | } 732 | }, 733 | "node_modules/bs58": { 734 | "version": "5.0.0", 735 | "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", 736 | "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", 737 | "license": "MIT", 738 | "dependencies": { 739 | "base-x": "^4.0.0" 740 | } 741 | }, 742 | "node_modules/buffer": { 743 | "version": "6.0.3", 744 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", 745 | "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", 746 | "funding": [ 747 | { 748 | "type": "github", 749 | "url": "https://github.com/sponsors/feross" 750 | }, 751 | { 752 | "type": "patreon", 753 | "url": "https://www.patreon.com/feross" 754 | }, 755 | { 756 | "type": "consulting", 757 | "url": "https://feross.org/support" 758 | } 759 | ], 760 | "license": "MIT", 761 | "dependencies": { 762 | "base64-js": "^1.3.1", 763 | "ieee754": "^1.2.1" 764 | } 765 | }, 766 | "node_modules/buffer-layout": { 767 | "version": "1.2.2", 768 | "resolved": "https://registry.npmjs.org/buffer-layout/-/buffer-layout-1.2.2.tgz", 769 | "integrity": "sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==", 770 | "license": "MIT", 771 | "engines": { 772 | "node": ">=4.5" 773 | } 774 | }, 775 | "node_modules/bufferutil": { 776 | "version": "4.0.8", 777 | "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", 778 | "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", 779 | "hasInstallScript": true, 780 | "license": "MIT", 781 | "optional": true, 782 | "dependencies": { 783 | "node-gyp-build": "^4.3.0" 784 | }, 785 | "engines": { 786 | "node": ">=6.14.2" 787 | } 788 | }, 789 | "node_modules/camelcase": { 790 | "version": "6.3.0", 791 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 792 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 793 | "license": "MIT", 794 | "engines": { 795 | "node": ">=10" 796 | }, 797 | "funding": { 798 | "url": "https://github.com/sponsors/sindresorhus" 799 | } 800 | }, 801 | "node_modules/chalk": { 802 | "version": "5.3.0", 803 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", 804 | "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", 805 | "license": "MIT", 806 | "engines": { 807 | "node": "^12.17.0 || ^14.13 || >=16.0.0" 808 | }, 809 | "funding": { 810 | "url": "https://github.com/chalk/chalk?sponsor=1" 811 | } 812 | }, 813 | "node_modules/chokidar": { 814 | "version": "3.6.0", 815 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", 816 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", 817 | "dev": true, 818 | "license": "MIT", 819 | "dependencies": { 820 | "anymatch": "~3.1.2", 821 | "braces": "~3.0.2", 822 | "glob-parent": "~5.1.2", 823 | "is-binary-path": "~2.1.0", 824 | "is-glob": "~4.0.1", 825 | "normalize-path": "~3.0.0", 826 | "readdirp": "~3.6.0" 827 | }, 828 | "engines": { 829 | "node": ">= 8.10.0" 830 | }, 831 | "funding": { 832 | "url": "https://paulmillr.com/funding/" 833 | }, 834 | "optionalDependencies": { 835 | "fsevents": "~2.3.2" 836 | } 837 | }, 838 | "node_modules/combined-stream": { 839 | "version": "1.0.8", 840 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 841 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 842 | "license": "MIT", 843 | "dependencies": { 844 | "delayed-stream": "~1.0.0" 845 | }, 846 | "engines": { 847 | "node": ">= 0.8" 848 | } 849 | }, 850 | "node_modules/commander": { 851 | "version": "12.1.0", 852 | "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", 853 | "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", 854 | "license": "MIT", 855 | "engines": { 856 | "node": ">=18" 857 | } 858 | }, 859 | "node_modules/concat-map": { 860 | "version": "0.0.1", 861 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 862 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 863 | "dev": true, 864 | "license": "MIT" 865 | }, 866 | "node_modules/create-require": { 867 | "version": "1.1.1", 868 | "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", 869 | "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", 870 | "dev": true, 871 | "license": "MIT" 872 | }, 873 | "node_modules/cross-fetch": { 874 | "version": "3.1.8", 875 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", 876 | "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", 877 | "license": "MIT", 878 | "dependencies": { 879 | "node-fetch": "^2.6.12" 880 | } 881 | }, 882 | "node_modules/crypto-hash": { 883 | "version": "1.3.0", 884 | "resolved": "https://registry.npmjs.org/crypto-hash/-/crypto-hash-1.3.0.tgz", 885 | "integrity": "sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==", 886 | "license": "MIT", 887 | "engines": { 888 | "node": ">=8" 889 | }, 890 | "funding": { 891 | "url": "https://github.com/sponsors/sindresorhus" 892 | } 893 | }, 894 | "node_modules/debug": { 895 | "version": "4.3.5", 896 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", 897 | "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", 898 | "dev": true, 899 | "license": "MIT", 900 | "dependencies": { 901 | "ms": "2.1.2" 902 | }, 903 | "engines": { 904 | "node": ">=6.0" 905 | }, 906 | "peerDependenciesMeta": { 907 | "supports-color": { 908 | "optional": true 909 | } 910 | } 911 | }, 912 | "node_modules/debug/node_modules/ms": { 913 | "version": "2.1.2", 914 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 915 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 916 | "dev": true, 917 | "license": "MIT" 918 | }, 919 | "node_modules/delay": { 920 | "version": "5.0.0", 921 | "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", 922 | "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", 923 | "license": "MIT", 924 | "engines": { 925 | "node": ">=10" 926 | }, 927 | "funding": { 928 | "url": "https://github.com/sponsors/sindresorhus" 929 | } 930 | }, 931 | "node_modules/delayed-stream": { 932 | "version": "1.0.0", 933 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 934 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 935 | "license": "MIT", 936 | "engines": { 937 | "node": ">=0.4.0" 938 | } 939 | }, 940 | "node_modules/diff": { 941 | "version": "4.0.2", 942 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 943 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 944 | "dev": true, 945 | "license": "BSD-3-Clause", 946 | "engines": { 947 | "node": ">=0.3.1" 948 | } 949 | }, 950 | "node_modules/dot-case": { 951 | "version": "3.0.4", 952 | "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", 953 | "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", 954 | "license": "MIT", 955 | "dependencies": { 956 | "no-case": "^3.0.4", 957 | "tslib": "^2.0.3" 958 | } 959 | }, 960 | "node_modules/dotenv": { 961 | "version": "16.4.5", 962 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", 963 | "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", 964 | "license": "BSD-2-Clause", 965 | "engines": { 966 | "node": ">=12" 967 | }, 968 | "funding": { 969 | "url": "https://dotenvx.com" 970 | } 971 | }, 972 | "node_modules/es6-promise": { 973 | "version": "4.2.8", 974 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", 975 | "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", 976 | "license": "MIT" 977 | }, 978 | "node_modules/es6-promisify": { 979 | "version": "5.0.0", 980 | "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", 981 | "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", 982 | "license": "MIT", 983 | "dependencies": { 984 | "es6-promise": "^4.0.3" 985 | } 986 | }, 987 | "node_modules/estree-walker": { 988 | "version": "2.0.2", 989 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 990 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 991 | "license": "MIT" 992 | }, 993 | "node_modules/eventemitter3": { 994 | "version": "4.0.7", 995 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", 996 | "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", 997 | "license": "MIT" 998 | }, 999 | "node_modules/eyes": { 1000 | "version": "0.1.8", 1001 | "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", 1002 | "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", 1003 | "engines": { 1004 | "node": "> 0.1.90" 1005 | } 1006 | }, 1007 | "node_modules/fast-stable-stringify": { 1008 | "version": "1.0.0", 1009 | "resolved": "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz", 1010 | "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==", 1011 | "license": "MIT" 1012 | }, 1013 | "node_modules/fastestsmallesttextencoderdecoder": { 1014 | "version": "1.0.22", 1015 | "resolved": "https://registry.npmjs.org/fastestsmallesttextencoderdecoder/-/fastestsmallesttextencoderdecoder-1.0.22.tgz", 1016 | "integrity": "sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==", 1017 | "license": "CC0-1.0", 1018 | "peer": true 1019 | }, 1020 | "node_modules/file-uri-to-path": { 1021 | "version": "1.0.0", 1022 | "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", 1023 | "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", 1024 | "license": "MIT" 1025 | }, 1026 | "node_modules/fill-range": { 1027 | "version": "7.1.1", 1028 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 1029 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 1030 | "dev": true, 1031 | "license": "MIT", 1032 | "dependencies": { 1033 | "to-regex-range": "^5.0.1" 1034 | }, 1035 | "engines": { 1036 | "node": ">=8" 1037 | } 1038 | }, 1039 | "node_modules/follow-redirects": { 1040 | "version": "1.15.6", 1041 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", 1042 | "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", 1043 | "funding": [ 1044 | { 1045 | "type": "individual", 1046 | "url": "https://github.com/sponsors/RubenVerborgh" 1047 | } 1048 | ], 1049 | "license": "MIT", 1050 | "engines": { 1051 | "node": ">=4.0" 1052 | }, 1053 | "peerDependenciesMeta": { 1054 | "debug": { 1055 | "optional": true 1056 | } 1057 | } 1058 | }, 1059 | "node_modules/form-data": { 1060 | "version": "4.0.0", 1061 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 1062 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 1063 | "license": "MIT", 1064 | "dependencies": { 1065 | "asynckit": "^0.4.0", 1066 | "combined-stream": "^1.0.8", 1067 | "mime-types": "^2.1.12" 1068 | }, 1069 | "engines": { 1070 | "node": ">= 6" 1071 | } 1072 | }, 1073 | "node_modules/fsevents": { 1074 | "version": "2.3.3", 1075 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1076 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1077 | "dev": true, 1078 | "hasInstallScript": true, 1079 | "license": "MIT", 1080 | "optional": true, 1081 | "os": [ 1082 | "darwin" 1083 | ], 1084 | "engines": { 1085 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1086 | } 1087 | }, 1088 | "node_modules/glob-parent": { 1089 | "version": "5.1.2", 1090 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1091 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1092 | "dev": true, 1093 | "license": "ISC", 1094 | "dependencies": { 1095 | "is-glob": "^4.0.1" 1096 | }, 1097 | "engines": { 1098 | "node": ">= 6" 1099 | } 1100 | }, 1101 | "node_modules/has-flag": { 1102 | "version": "3.0.0", 1103 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1104 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 1105 | "dev": true, 1106 | "license": "MIT", 1107 | "engines": { 1108 | "node": ">=4" 1109 | } 1110 | }, 1111 | "node_modules/humanize-ms": { 1112 | "version": "1.2.1", 1113 | "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", 1114 | "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", 1115 | "license": "MIT", 1116 | "dependencies": { 1117 | "ms": "^2.0.0" 1118 | } 1119 | }, 1120 | "node_modules/ieee754": { 1121 | "version": "1.2.1", 1122 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1123 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 1124 | "funding": [ 1125 | { 1126 | "type": "github", 1127 | "url": "https://github.com/sponsors/feross" 1128 | }, 1129 | { 1130 | "type": "patreon", 1131 | "url": "https://www.patreon.com/feross" 1132 | }, 1133 | { 1134 | "type": "consulting", 1135 | "url": "https://feross.org/support" 1136 | } 1137 | ], 1138 | "license": "BSD-3-Clause" 1139 | }, 1140 | "node_modules/ignore-by-default": { 1141 | "version": "1.0.1", 1142 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", 1143 | "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", 1144 | "dev": true, 1145 | "license": "ISC" 1146 | }, 1147 | "node_modules/is-binary-path": { 1148 | "version": "2.1.0", 1149 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1150 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1151 | "dev": true, 1152 | "license": "MIT", 1153 | "dependencies": { 1154 | "binary-extensions": "^2.0.0" 1155 | }, 1156 | "engines": { 1157 | "node": ">=8" 1158 | } 1159 | }, 1160 | "node_modules/is-extglob": { 1161 | "version": "2.1.1", 1162 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1163 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1164 | "dev": true, 1165 | "license": "MIT", 1166 | "engines": { 1167 | "node": ">=0.10.0" 1168 | } 1169 | }, 1170 | "node_modules/is-glob": { 1171 | "version": "4.0.3", 1172 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1173 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1174 | "dev": true, 1175 | "license": "MIT", 1176 | "dependencies": { 1177 | "is-extglob": "^2.1.1" 1178 | }, 1179 | "engines": { 1180 | "node": ">=0.10.0" 1181 | } 1182 | }, 1183 | "node_modules/is-number": { 1184 | "version": "7.0.0", 1185 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1186 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1187 | "dev": true, 1188 | "license": "MIT", 1189 | "engines": { 1190 | "node": ">=0.12.0" 1191 | } 1192 | }, 1193 | "node_modules/isomorphic-ws": { 1194 | "version": "4.0.1", 1195 | "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", 1196 | "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", 1197 | "license": "MIT", 1198 | "peerDependencies": { 1199 | "ws": "*" 1200 | } 1201 | }, 1202 | "node_modules/jayson": { 1203 | "version": "4.1.0", 1204 | "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.0.tgz", 1205 | "integrity": "sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==", 1206 | "license": "MIT", 1207 | "dependencies": { 1208 | "@types/connect": "^3.4.33", 1209 | "@types/node": "^12.12.54", 1210 | "@types/ws": "^7.4.4", 1211 | "commander": "^2.20.3", 1212 | "delay": "^5.0.0", 1213 | "es6-promisify": "^5.0.0", 1214 | "eyes": "^0.1.8", 1215 | "isomorphic-ws": "^4.0.1", 1216 | "json-stringify-safe": "^5.0.1", 1217 | "JSONStream": "^1.3.5", 1218 | "uuid": "^8.3.2", 1219 | "ws": "^7.4.5" 1220 | }, 1221 | "bin": { 1222 | "jayson": "bin/jayson.js" 1223 | }, 1224 | "engines": { 1225 | "node": ">=8" 1226 | } 1227 | }, 1228 | "node_modules/jayson/node_modules/@types/node": { 1229 | "version": "12.20.55", 1230 | "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", 1231 | "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", 1232 | "license": "MIT" 1233 | }, 1234 | "node_modules/jayson/node_modules/commander": { 1235 | "version": "2.20.3", 1236 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 1237 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 1238 | "license": "MIT" 1239 | }, 1240 | "node_modules/json-stringify-safe": { 1241 | "version": "5.0.1", 1242 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 1243 | "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", 1244 | "license": "ISC" 1245 | }, 1246 | "node_modules/jsonparse": { 1247 | "version": "1.3.1", 1248 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", 1249 | "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", 1250 | "engines": [ 1251 | "node >= 0.2.0" 1252 | ], 1253 | "license": "MIT" 1254 | }, 1255 | "node_modules/JSONStream": { 1256 | "version": "1.3.5", 1257 | "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", 1258 | "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", 1259 | "license": "(MIT OR Apache-2.0)", 1260 | "dependencies": { 1261 | "jsonparse": "^1.2.0", 1262 | "through": ">=2.2.7 <3" 1263 | }, 1264 | "bin": { 1265 | "JSONStream": "bin.js" 1266 | }, 1267 | "engines": { 1268 | "node": "*" 1269 | } 1270 | }, 1271 | "node_modules/lower-case": { 1272 | "version": "2.0.2", 1273 | "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", 1274 | "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", 1275 | "license": "MIT", 1276 | "dependencies": { 1277 | "tslib": "^2.0.3" 1278 | } 1279 | }, 1280 | "node_modules/make-error": { 1281 | "version": "1.3.6", 1282 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 1283 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", 1284 | "dev": true, 1285 | "license": "ISC" 1286 | }, 1287 | "node_modules/mime-db": { 1288 | "version": "1.52.0", 1289 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1290 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 1291 | "license": "MIT", 1292 | "engines": { 1293 | "node": ">= 0.6" 1294 | } 1295 | }, 1296 | "node_modules/mime-types": { 1297 | "version": "2.1.35", 1298 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1299 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1300 | "license": "MIT", 1301 | "dependencies": { 1302 | "mime-db": "1.52.0" 1303 | }, 1304 | "engines": { 1305 | "node": ">= 0.6" 1306 | } 1307 | }, 1308 | "node_modules/minimatch": { 1309 | "version": "3.1.2", 1310 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1311 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1312 | "dev": true, 1313 | "license": "ISC", 1314 | "dependencies": { 1315 | "brace-expansion": "^1.1.7" 1316 | }, 1317 | "engines": { 1318 | "node": "*" 1319 | } 1320 | }, 1321 | "node_modules/minimist": { 1322 | "version": "1.2.8", 1323 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 1324 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 1325 | "license": "MIT", 1326 | "funding": { 1327 | "url": "https://github.com/sponsors/ljharb" 1328 | } 1329 | }, 1330 | "node_modules/ms": { 1331 | "version": "2.1.3", 1332 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1333 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1334 | "license": "MIT" 1335 | }, 1336 | "node_modules/no-case": { 1337 | "version": "3.0.4", 1338 | "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", 1339 | "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", 1340 | "license": "MIT", 1341 | "dependencies": { 1342 | "lower-case": "^2.0.2", 1343 | "tslib": "^2.0.3" 1344 | } 1345 | }, 1346 | "node_modules/node-fetch": { 1347 | "version": "2.7.0", 1348 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", 1349 | "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", 1350 | "license": "MIT", 1351 | "dependencies": { 1352 | "whatwg-url": "^5.0.0" 1353 | }, 1354 | "engines": { 1355 | "node": "4.x || >=6.0.0" 1356 | }, 1357 | "peerDependencies": { 1358 | "encoding": "^0.1.0" 1359 | }, 1360 | "peerDependenciesMeta": { 1361 | "encoding": { 1362 | "optional": true 1363 | } 1364 | } 1365 | }, 1366 | "node_modules/node-gyp-build": { 1367 | "version": "4.8.1", 1368 | "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", 1369 | "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", 1370 | "license": "MIT", 1371 | "optional": true, 1372 | "bin": { 1373 | "node-gyp-build": "bin.js", 1374 | "node-gyp-build-optional": "optional.js", 1375 | "node-gyp-build-test": "build-test.js" 1376 | } 1377 | }, 1378 | "node_modules/nodemon": { 1379 | "version": "3.1.4", 1380 | "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.4.tgz", 1381 | "integrity": "sha512-wjPBbFhtpJwmIeY2yP7QF+UKzPfltVGtfce1g/bB15/8vCGZj8uxD62b/b9M9/WVgme0NZudpownKN+c0plXlQ==", 1382 | "dev": true, 1383 | "license": "MIT", 1384 | "dependencies": { 1385 | "chokidar": "^3.5.2", 1386 | "debug": "^4", 1387 | "ignore-by-default": "^1.0.1", 1388 | "minimatch": "^3.1.2", 1389 | "pstree.remy": "^1.1.8", 1390 | "semver": "^7.5.3", 1391 | "simple-update-notifier": "^2.0.0", 1392 | "supports-color": "^5.5.0", 1393 | "touch": "^3.1.0", 1394 | "undefsafe": "^2.0.5" 1395 | }, 1396 | "bin": { 1397 | "nodemon": "bin/nodemon.js" 1398 | }, 1399 | "engines": { 1400 | "node": ">=10" 1401 | }, 1402 | "funding": { 1403 | "type": "opencollective", 1404 | "url": "https://opencollective.com/nodemon" 1405 | } 1406 | }, 1407 | "node_modules/normalize-path": { 1408 | "version": "3.0.0", 1409 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1410 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1411 | "dev": true, 1412 | "license": "MIT", 1413 | "engines": { 1414 | "node": ">=0.10.0" 1415 | } 1416 | }, 1417 | "node_modules/pako": { 1418 | "version": "2.1.0", 1419 | "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", 1420 | "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", 1421 | "license": "(MIT AND Zlib)" 1422 | }, 1423 | "node_modules/picomatch": { 1424 | "version": "2.3.1", 1425 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1426 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1427 | "license": "MIT", 1428 | "engines": { 1429 | "node": ">=8.6" 1430 | }, 1431 | "funding": { 1432 | "url": "https://github.com/sponsors/jonschlinkert" 1433 | } 1434 | }, 1435 | "node_modules/proxy-from-env": { 1436 | "version": "1.1.0", 1437 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 1438 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", 1439 | "license": "MIT" 1440 | }, 1441 | "node_modules/pstree.remy": { 1442 | "version": "1.1.8", 1443 | "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", 1444 | "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", 1445 | "dev": true, 1446 | "license": "MIT" 1447 | }, 1448 | "node_modules/pumpdotfun-sdk": { 1449 | "version": "1.3.2", 1450 | "resolved": "https://registry.npmjs.org/pumpdotfun-sdk/-/pumpdotfun-sdk-1.3.2.tgz", 1451 | "integrity": "sha512-TkYY+ZztxyPzv1f38evgdam92Po3YATI8s6BzmvxH8FypBpPs3pBKS301z7k3KXc1WWfjGWG79K/BANWaAcvkQ==", 1452 | "license": "ISC", 1453 | "dependencies": { 1454 | "@coral-xyz/anchor": "^0.30.1", 1455 | "@rollup/plugin-json": "^6.1.0", 1456 | "@solana/spl-token": "0.4.6", 1457 | "@solana/web3.js": "^1.92.1" 1458 | } 1459 | }, 1460 | "node_modules/readdirp": { 1461 | "version": "3.6.0", 1462 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1463 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1464 | "dev": true, 1465 | "license": "MIT", 1466 | "dependencies": { 1467 | "picomatch": "^2.2.1" 1468 | }, 1469 | "engines": { 1470 | "node": ">=8.10.0" 1471 | } 1472 | }, 1473 | "node_modules/regenerator-runtime": { 1474 | "version": "0.14.1", 1475 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", 1476 | "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", 1477 | "license": "MIT" 1478 | }, 1479 | "node_modules/rpc-websockets": { 1480 | "version": "9.0.2", 1481 | "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-9.0.2.tgz", 1482 | "integrity": "sha512-YzggvfItxMY3Lwuax5rC18inhbjJv9Py7JXRHxTIi94JOLrqBsSsUUc5bbl5W6c11tXhdfpDPK0KzBhoGe8jjw==", 1483 | "license": "LGPL-3.0-only", 1484 | "dependencies": { 1485 | "@swc/helpers": "^0.5.11", 1486 | "@types/uuid": "^8.3.4", 1487 | "@types/ws": "^8.2.2", 1488 | "buffer": "^6.0.3", 1489 | "eventemitter3": "^5.0.1", 1490 | "uuid": "^8.3.2", 1491 | "ws": "^8.5.0" 1492 | }, 1493 | "funding": { 1494 | "type": "paypal", 1495 | "url": "https://paypal.me/kozjak" 1496 | }, 1497 | "optionalDependencies": { 1498 | "bufferutil": "^4.0.1", 1499 | "utf-8-validate": "^5.0.2" 1500 | } 1501 | }, 1502 | "node_modules/rpc-websockets/node_modules/@types/ws": { 1503 | "version": "8.5.10", 1504 | "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", 1505 | "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", 1506 | "license": "MIT", 1507 | "dependencies": { 1508 | "@types/node": "*" 1509 | } 1510 | }, 1511 | "node_modules/rpc-websockets/node_modules/eventemitter3": { 1512 | "version": "5.0.1", 1513 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", 1514 | "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", 1515 | "license": "MIT" 1516 | }, 1517 | "node_modules/rpc-websockets/node_modules/ws": { 1518 | "version": "8.17.1", 1519 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", 1520 | "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", 1521 | "license": "MIT", 1522 | "engines": { 1523 | "node": ">=10.0.0" 1524 | }, 1525 | "peerDependencies": { 1526 | "bufferutil": "^4.0.1", 1527 | "utf-8-validate": ">=5.0.2" 1528 | }, 1529 | "peerDependenciesMeta": { 1530 | "bufferutil": { 1531 | "optional": true 1532 | }, 1533 | "utf-8-validate": { 1534 | "optional": true 1535 | } 1536 | } 1537 | }, 1538 | "node_modules/safe-buffer": { 1539 | "version": "5.2.1", 1540 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1541 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1542 | "funding": [ 1543 | { 1544 | "type": "github", 1545 | "url": "https://github.com/sponsors/feross" 1546 | }, 1547 | { 1548 | "type": "patreon", 1549 | "url": "https://www.patreon.com/feross" 1550 | }, 1551 | { 1552 | "type": "consulting", 1553 | "url": "https://feross.org/support" 1554 | } 1555 | ], 1556 | "license": "MIT" 1557 | }, 1558 | "node_modules/semver": { 1559 | "version": "7.6.2", 1560 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", 1561 | "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", 1562 | "dev": true, 1563 | "license": "ISC", 1564 | "bin": { 1565 | "semver": "bin/semver.js" 1566 | }, 1567 | "engines": { 1568 | "node": ">=10" 1569 | } 1570 | }, 1571 | "node_modules/simple-update-notifier": { 1572 | "version": "2.0.0", 1573 | "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", 1574 | "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", 1575 | "dev": true, 1576 | "license": "MIT", 1577 | "dependencies": { 1578 | "semver": "^7.5.3" 1579 | }, 1580 | "engines": { 1581 | "node": ">=10" 1582 | } 1583 | }, 1584 | "node_modules/snake-case": { 1585 | "version": "3.0.4", 1586 | "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", 1587 | "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", 1588 | "license": "MIT", 1589 | "dependencies": { 1590 | "dot-case": "^3.0.4", 1591 | "tslib": "^2.0.3" 1592 | } 1593 | }, 1594 | "node_modules/superstruct": { 1595 | "version": "1.0.4", 1596 | "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.4.tgz", 1597 | "integrity": "sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==", 1598 | "license": "MIT", 1599 | "engines": { 1600 | "node": ">=14.0.0" 1601 | } 1602 | }, 1603 | "node_modules/supports-color": { 1604 | "version": "5.5.0", 1605 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1606 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1607 | "dev": true, 1608 | "license": "MIT", 1609 | "dependencies": { 1610 | "has-flag": "^3.0.0" 1611 | }, 1612 | "engines": { 1613 | "node": ">=4" 1614 | } 1615 | }, 1616 | "node_modules/text-encoding-utf-8": { 1617 | "version": "1.0.2", 1618 | "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", 1619 | "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" 1620 | }, 1621 | "node_modules/through": { 1622 | "version": "2.3.8", 1623 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1624 | "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", 1625 | "license": "MIT" 1626 | }, 1627 | "node_modules/to-regex-range": { 1628 | "version": "5.0.1", 1629 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1630 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1631 | "dev": true, 1632 | "license": "MIT", 1633 | "dependencies": { 1634 | "is-number": "^7.0.0" 1635 | }, 1636 | "engines": { 1637 | "node": ">=8.0" 1638 | } 1639 | }, 1640 | "node_modules/toml": { 1641 | "version": "3.0.0", 1642 | "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", 1643 | "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==", 1644 | "license": "MIT" 1645 | }, 1646 | "node_modules/touch": { 1647 | "version": "3.1.1", 1648 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", 1649 | "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", 1650 | "dev": true, 1651 | "license": "ISC", 1652 | "bin": { 1653 | "nodetouch": "bin/nodetouch.js" 1654 | } 1655 | }, 1656 | "node_modules/tr46": { 1657 | "version": "0.0.3", 1658 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1659 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", 1660 | "license": "MIT" 1661 | }, 1662 | "node_modules/ts-node": { 1663 | "version": "10.9.2", 1664 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", 1665 | "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", 1666 | "dev": true, 1667 | "license": "MIT", 1668 | "dependencies": { 1669 | "@cspotcode/source-map-support": "^0.8.0", 1670 | "@tsconfig/node10": "^1.0.7", 1671 | "@tsconfig/node12": "^1.0.7", 1672 | "@tsconfig/node14": "^1.0.0", 1673 | "@tsconfig/node16": "^1.0.2", 1674 | "acorn": "^8.4.1", 1675 | "acorn-walk": "^8.1.1", 1676 | "arg": "^4.1.0", 1677 | "create-require": "^1.1.0", 1678 | "diff": "^4.0.1", 1679 | "make-error": "^1.1.1", 1680 | "v8-compile-cache-lib": "^3.0.1", 1681 | "yn": "3.1.1" 1682 | }, 1683 | "bin": { 1684 | "ts-node": "dist/bin.js", 1685 | "ts-node-cwd": "dist/bin-cwd.js", 1686 | "ts-node-esm": "dist/bin-esm.js", 1687 | "ts-node-script": "dist/bin-script.js", 1688 | "ts-node-transpile-only": "dist/bin-transpile.js", 1689 | "ts-script": "dist/bin-script-deprecated.js" 1690 | }, 1691 | "peerDependencies": { 1692 | "@swc/core": ">=1.2.50", 1693 | "@swc/wasm": ">=1.2.50", 1694 | "@types/node": "*", 1695 | "typescript": ">=2.7" 1696 | }, 1697 | "peerDependenciesMeta": { 1698 | "@swc/core": { 1699 | "optional": true 1700 | }, 1701 | "@swc/wasm": { 1702 | "optional": true 1703 | } 1704 | } 1705 | }, 1706 | "node_modules/tslib": { 1707 | "version": "2.6.3", 1708 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", 1709 | "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", 1710 | "license": "0BSD" 1711 | }, 1712 | "node_modules/typescript": { 1713 | "version": "5.5.2", 1714 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", 1715 | "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", 1716 | "dev": true, 1717 | "license": "Apache-2.0", 1718 | "peer": true, 1719 | "bin": { 1720 | "tsc": "bin/tsc", 1721 | "tsserver": "bin/tsserver" 1722 | }, 1723 | "engines": { 1724 | "node": ">=14.17" 1725 | } 1726 | }, 1727 | "node_modules/undefsafe": { 1728 | "version": "2.0.5", 1729 | "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", 1730 | "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", 1731 | "dev": true, 1732 | "license": "MIT" 1733 | }, 1734 | "node_modules/undici-types": { 1735 | "version": "5.26.5", 1736 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 1737 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", 1738 | "license": "MIT" 1739 | }, 1740 | "node_modules/utf-8-validate": { 1741 | "version": "5.0.10", 1742 | "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", 1743 | "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", 1744 | "hasInstallScript": true, 1745 | "license": "MIT", 1746 | "optional": true, 1747 | "dependencies": { 1748 | "node-gyp-build": "^4.3.0" 1749 | }, 1750 | "engines": { 1751 | "node": ">=6.14.2" 1752 | } 1753 | }, 1754 | "node_modules/uuid": { 1755 | "version": "8.3.2", 1756 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 1757 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", 1758 | "license": "MIT", 1759 | "bin": { 1760 | "uuid": "dist/bin/uuid" 1761 | } 1762 | }, 1763 | "node_modules/v8-compile-cache-lib": { 1764 | "version": "3.0.1", 1765 | "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", 1766 | "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", 1767 | "dev": true, 1768 | "license": "MIT" 1769 | }, 1770 | "node_modules/webidl-conversions": { 1771 | "version": "3.0.1", 1772 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1773 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", 1774 | "license": "BSD-2-Clause" 1775 | }, 1776 | "node_modules/whatwg-url": { 1777 | "version": "5.0.0", 1778 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1779 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 1780 | "license": "MIT", 1781 | "dependencies": { 1782 | "tr46": "~0.0.3", 1783 | "webidl-conversions": "^3.0.0" 1784 | } 1785 | }, 1786 | "node_modules/ws": { 1787 | "version": "7.5.10", 1788 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", 1789 | "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", 1790 | "license": "MIT", 1791 | "engines": { 1792 | "node": ">=8.3.0" 1793 | }, 1794 | "peerDependencies": { 1795 | "bufferutil": "^4.0.1", 1796 | "utf-8-validate": "^5.0.2" 1797 | }, 1798 | "peerDependenciesMeta": { 1799 | "bufferutil": { 1800 | "optional": true 1801 | }, 1802 | "utf-8-validate": { 1803 | "optional": true 1804 | } 1805 | } 1806 | }, 1807 | "node_modules/yn": { 1808 | "version": "3.1.1", 1809 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", 1810 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", 1811 | "dev": true, 1812 | "license": "MIT", 1813 | "engines": { 1814 | "node": ">=6" 1815 | } 1816 | } 1817 | } 1818 | } 1819 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@degenfrends/pump-bump-bot", 3 | "version": "0.0.1", 4 | "description": "Bot to bump tokens on pump.fun with micro buys.", 5 | "main": "src/index.ts", 6 | "scripts": { 7 | "build": "tsc", 8 | "test": "echo \"Error: no test specified\" && exit 1", 9 | "dev": "nodemon src/index.ts --ignore ./var/app.log" 10 | }, 11 | "author": "", 12 | "license": "ISC", 13 | "dependencies": { 14 | "@solana/spl-token": "0.4.6", 15 | "@solana/web3.js": "^1.92.0", 16 | "axios": "^1.7.2", 17 | "bs58": "^5.0.0", 18 | "dotenv": "^16.4.5", 19 | "minimist": "^1.2.8", 20 | "pumpdotfun-sdk": "^1.3.2" 21 | }, 22 | "devDependencies": { 23 | "@types/node": "^20.14.1", 24 | "nodemon": "^3.1.3", 25 | "ts-node": "^10.9.2" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/command/bump-command.ts: -------------------------------------------------------------------------------- 1 | //import PumpFunTrader from '@degenfrends/solana-pumpfun-trader'; 2 | import getBalance from '../solana/get-balance'; 3 | import getTokenAccount from '../solana/get-token-account'; 4 | import getTokenBalance from '../solana/get-token-balance'; 5 | import { DEFAULT_DECIMALS, PumpFunSDK } from 'pumpdotfun-sdk'; 6 | import NodeWallet from '@coral-xyz/anchor/dist/cjs/nodewallet'; 7 | import { AnchorProvider } from '@coral-xyz/anchor'; 8 | import { config } from 'dotenv'; 9 | import { Connection, Keypair, LAMPORTS_PER_SOL, PublicKey } from '@solana/web3.js'; 10 | import bs58 from 'bs58'; 11 | config(); 12 | 13 | export default class BumpCommand { 14 | private bumperPrivateKey: string; 15 | private mintAddress: string; 16 | private walletAddress: string; 17 | private provider: any; 18 | private sdk: PumpFunSDK; 19 | private counter: number = 1; 20 | SLIPPAGE_BASIS_POINTS = 100n; 21 | buyTokens = async (sdk: PumpFunSDK, testAccount: Keypair, mint: PublicKey, solAmount: number) => { 22 | const buyResults = await sdk.buy(testAccount, mint, BigInt(solAmount * LAMPORTS_PER_SOL), this.SLIPPAGE_BASIS_POINTS, { 23 | unitLimit: 250000, 24 | unitPrice: 250000 25 | }); 26 | console.log('Buy results:', buyResults); 27 | if (buyResults.success) { 28 | console.log('Buy successful', buyResults); 29 | } else { 30 | console.log('Buy failed'); 31 | } 32 | }; 33 | sellTokens = async (sdk: PumpFunSDK, testAccount: Keypair, mint: PublicKey, tokenAmount: number) => { 34 | const sellResults = await sdk.sell(testAccount, mint, BigInt(tokenAmount * Math.pow(10, DEFAULT_DECIMALS)), this.SLIPPAGE_BASIS_POINTS, { 35 | unitLimit: 250000, 36 | unitPrice: 250000 37 | }); 38 | 39 | if (sellResults.success) { 40 | console.log('Sell successful'); 41 | } else { 42 | console.log('Sell failed'); 43 | } 44 | }; 45 | getProvider = () => { 46 | if (!process.env.RPC_URL) { 47 | throw new Error('Please set HELIUS_RPC_URL in .env file'); 48 | } 49 | 50 | const connection = new Connection(process.env.RPC_URL || ''); 51 | const wallet = new NodeWallet(new Keypair()); 52 | return new AnchorProvider(connection, wallet, { commitment: 'finalized' }); 53 | }; 54 | constructor(privateKey: string, mintAddress: string, walletAddress: string) { 55 | this.bumperPrivateKey = privateKey; 56 | this.mintAddress = mintAddress; 57 | this.walletAddress = walletAddress; 58 | this.provider = this.getProvider(); 59 | this.sdk = new PumpFunSDK(this.provider); 60 | } 61 | async main() { 62 | const tokenAccount = await getTokenAccount(this.walletAddress, this.mintAddress); 63 | const interval = Number(process.env.BUY_INTERVAL); 64 | setInterval(async () => { 65 | await this.bump(tokenAccount); 66 | }, interval * 1000); 67 | } 68 | async bump(tokenAccount: string | undefined) { 69 | console.log('Bumping token:', tokenAccount); 70 | const walletPrivateKey = await Keypair.fromSecretKey(new Uint8Array(bs58.decode(this.bumperPrivateKey))); 71 | let solIn = Number(process.env.BUY_AMOUNT); 72 | 73 | try { 74 | let tokenBalance = 0; 75 | if (this.counter >= 2) { 76 | if (tokenAccount) { 77 | tokenBalance = await getTokenBalance(tokenAccount); 78 | console.log('Token balance:', tokenBalance); 79 | this.counter = 0; 80 | } 81 | console.log('Selling token'); 82 | const sellRespponse = await this.sellTokens(this.sdk, walletPrivateKey, new PublicKey(this.mintAddress), tokenBalance); 83 | console.log('sold token: ', sellRespponse); 84 | } 85 | console.log('Buying token'); 86 | const buyResponse = await this.buyTokens(this.sdk, walletPrivateKey, new PublicKey(this.mintAddress), solIn); 87 | console.log('Bump successful: ', buyResponse); 88 | this.counter++; 89 | } catch (error) { 90 | console.error('Error in main function:', error); 91 | this.bump(tokenAccount); 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { config } from 'dotenv'; 2 | config(); 3 | import BumpCommand from './command/bump-command'; 4 | var argv = require('minimist')(process.argv.slice(2)); 5 | 6 | let privateKey; 7 | if (process.env.PRIVATE_KEY) { 8 | privateKey = process.env.PRIVATE_KEY; 9 | } else { 10 | privateKey = argv.privateKey; 11 | } 12 | const tokenAddress = argv.tokenAddress; 13 | const walletAddress = argv.walletAddress; 14 | const bumper = new BumpCommand(privateKey, tokenAddress, walletAddress); 15 | bumper.main(); 16 | -------------------------------------------------------------------------------- /src/solana/get-balance.ts: -------------------------------------------------------------------------------- 1 | import { Connection, LAMPORTS_PER_SOL, PublicKey } from '@solana/web3.js'; 2 | import { config } from 'dotenv'; 3 | config(); 4 | export default async function getBalance(walletAddress: string) { 5 | const connection = new Connection(String(process.env.RPC_URL), 'confirmed'); 6 | const wallet = new PublicKey(walletAddress); 7 | const info = await connection.getBalance(wallet); 8 | let lamportBalance = info / LAMPORTS_PER_SOL; 9 | 10 | return lamportBalance; 11 | } 12 | -------------------------------------------------------------------------------- /src/solana/get-token-account.ts: -------------------------------------------------------------------------------- 1 | import { Connection, PublicKey } from '@solana/web3.js'; 2 | import { config } from 'dotenv'; 3 | config(); 4 | 5 | export default async function getTokenAccount(walletAddress: string, mintAddress: string) { 6 | const connection = new Connection(String(process.env.RPC_URL), 'confirmed'); 7 | const wallet = new PublicKey(walletAddress); 8 | 9 | const account = await connection.getTokenAccountsByOwner(wallet, { 10 | mint: new PublicKey(mintAddress) 11 | }); 12 | if (!account.value) { 13 | return undefined; 14 | } 15 | return account.value[0]?.pubkey?.toString() || undefined; 16 | } 17 | -------------------------------------------------------------------------------- /src/solana/get-token-balance.ts: -------------------------------------------------------------------------------- 1 | import { Connection, PublicKey } from '@solana/web3.js'; 2 | import { config } from 'dotenv'; 3 | import { getAccount, getMint } from '@solana/spl-token'; 4 | 5 | config(); 6 | 7 | export default async function getTokenBalance(tokenAccount: string) { 8 | const connection = new Connection(String(process.env.RPC_URL), 'confirmed'); 9 | const tokenWallet = new PublicKey(tokenAccount); 10 | 11 | const info = await getAccount(connection, tokenWallet); 12 | const amount = Number(info.amount); 13 | const mint = await getMint(connection, info.mint); 14 | const balance = amount / 10 ** mint.decimals; 15 | return balance; 16 | } 17 | -------------------------------------------------------------------------------- /tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "exclude": ["test"] 4 | } 5 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2022", 4 | "module": "CommonJS", 5 | "allowSyntheticDefaultImports": true, 6 | "emitDecoratorMetadata": true, 7 | "experimentalDecorators": true, 8 | "esModuleInterop": true, 9 | "strictPropertyInitialization": false, 10 | "outDir": "dist", 11 | "forceConsistentCasingInFileNames": true, 12 | "strict": true, 13 | "skipLibCheck": true 14 | }, 15 | "exclude": ["node_modules/"], 16 | "include": ["src/**/*.ts", "test/**/*.ts"] 17 | } 18 | --------------------------------------------------------------------------------