├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── changelog.md ├── example.ts ├── package-lock.json ├── package.json ├── src ├── constants.ts ├── launch.ts └── utils.ts └── tsconfig.json /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | /node_modules 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Bilix 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This repository provides tools and scripts for programmatically launching `pump.fun` tokens. The project is set up using TypeScript and includes essential modules to facilitate token creation and management. 2 | 3 | ## Features 4 | 5 | - Programmatically launch `pump.fun` tokens. 6 | - Utilities for managing token configurations. 7 | - Easy integration into existing projects. 8 | 9 | ## Prerequisites 10 | 11 | Ensure you have the following installed: 12 | 13 | - [Node.js](https://nodejs.org/) (version 14 or later) 14 | - [npm](https://www.npmjs.com/) 15 | - [TypeScript](https://www.typescriptlang.org/) 16 | 17 | ## Installation 18 | 19 | To install the package, clone the repository and install the dependencies: 20 | 21 | ```bash 22 | git clone https://github.com/bilix-software/pump-fun-token-launcher.git 23 | cd pump-fun-token-launcher 24 | npm install 25 | ``` 26 | 27 | ## Usage 28 | 29 | To compile and run the scripts: 30 | 31 | 1. Configure your environment variables as instructed. 32 | 2. Compile the TypeScript files: 33 | 34 | ```bash 35 | npx tsc 36 | ``` 37 | 38 | 3. Run the compiled JavaScript file: 39 | 40 | ```bash 41 | node example.js 42 | ``` 43 | 44 | ## Project Structure 45 | 46 | - `src/`: Contains the source code for the package. 47 | - `constants.ts`: Contains constant values used throughout the project. 48 | - `launch.ts`: Main module for launching tokens. 49 | - `utils.ts`: Utility functions used in the project. 50 | - `package.json`: Project metadata and dependencies. 51 | - `tsconfig.json`: TypeScript configuration file. 52 | 53 | ## Contributing 54 | 55 | Contributions are welcome! Please fork the repository and submit a pull request with your improvements. 56 | 57 | 1. Fork the repository 58 | 2. Create your feature branch (`git checkout -b feature/YourFeature`) 59 | 3. Commit your changes (`git commit -m 'Add some feature'`) 60 | 4. Push to the branch (`git push origin feature/YourFeature`) 61 | 5. Open a pull request 62 | 63 | ## License 64 | 65 | This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. 66 | 67 | ## Tips 68 | JATt1ta9GcbVMThdL18rXUqHn3toCMjWkHWtxM5WN3ec 69 | 70 | -------------------------------------------------------------------------------- /changelog.md: -------------------------------------------------------------------------------- 1 | Changelog for 10-04-2024: 2 | - Web UI 3 | - Added beta.viper.bot for testing new features 4 | - Added bundling option up to 25 wallets on beta.viper.bot 5 | - Bugfix for not showing proper error messages on both viper.bot and beta.viper.bot 6 | 7 | Changelog for 26-07-2024: 8 | - Web UI 9 | - Added option to use one time coupon codes that remove fees 10 | - See https://t.me/viper_discussions for more info and to obtain a trial coupon 11 | Changelog for 25-07-2024: 12 | - Backend (used by Telegram bot and Web UI) 13 | - Fixed bug where duplicate wallets would cause issue when using the sell all function 14 | - Web UI 15 | - Fixed bug where fee at the bottom of page wasn't updating properly 16 | - Added Changelog Tab to navigation 17 | - Telegram bot 18 | - Fixed bug where wallets were not deleting properly 19 | 20 | Changelog for 24-07-2024: 21 | - Github repo's 22 | - Added new showcase videos to illustrate updated features 23 | - Clarified max limit of 17 buys instead of 16 24 | - Telegram bot 25 | - Bugfixes for transaction confirmations 26 | - Bugfixes for selling functionality 27 | - Improved UI for easier selling after launches 28 | 29 | Changelog for 22-07-2024: 30 | - Telegram bot 31 | - Added Support and Discussions Group (https://t.me/viper_discussions) 32 | - Added dev wallet step for clarity 33 | - Split up buy amount steps to per wallet input to show max balance 34 | - Added max buy amount indications considering slippage + tip 35 | -------------------------------------------------------------------------------- /example.ts: -------------------------------------------------------------------------------- 1 | import { launchToken } from './src/launch'; 2 | 3 | class Example { 4 | private deployerPrivatekey: string; 5 | private tokenUri: string; 6 | private tokenSymbol: string; 7 | private tokenName: string; 8 | 9 | 10 | constructor(deployerPrivatekey: string, tokenUri: string, tokenSymbol: string, tokenName: string) { 11 | this.deployerPrivatekey = deployerPrivatekey; 12 | this.tokenUri = tokenUri; 13 | this.tokenSymbol = tokenSymbol; 14 | this.tokenName = tokenName; 15 | } 16 | 17 | async main() { 18 | try { 19 | await launchToken(this.deployerPrivatekey, this.tokenName, this.tokenSymbol, this.tokenUri) 20 | } catch (error) { 21 | console.error('Error in main function:', error); 22 | } 23 | } 24 | } 25 | 26 | // Usage 27 | const deployerPrivatekey = 'your_private_key_here'; // Replace with your actual private key 28 | const tokenUri = 'your_token_uri_here'; //Replace with actual token uri 29 | const tokenSymbol = 'your_token_symbol_here'; //Replace with actual token symbol 30 | const tokenName = 'your_token_name_here'; //Replace with actual token name 31 | 32 | 33 | const example = new Example(deployerPrivatekey,tokenUri, tokenSymbol, tokenName); 34 | example.main(); 35 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pump-fun-token-launcher", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "pump-fun-token-launcher", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "@openbook-dex/openbook": "^0.0.9", 13 | "@raydium-io/raydium-sdk": "^1.3.1-beta.52", 14 | "@solana/spl-token": "^0.4.6", 15 | "@solana/web3.js": "^1.91.8", 16 | "axios": "^1.6.8", 17 | "bs58": "^5.0.0", 18 | "buffer-layout": "^1.2.2" 19 | }, 20 | "devDependencies": { 21 | "typescript": "^5.4.5" 22 | } 23 | }, 24 | "node_modules/@babel/runtime": { 25 | "version": "7.24.5", 26 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", 27 | "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", 28 | "dependencies": { 29 | "regenerator-runtime": "^0.14.0" 30 | }, 31 | "engines": { 32 | "node": ">=6.9.0" 33 | } 34 | }, 35 | "node_modules/@noble/curves": { 36 | "version": "1.4.0", 37 | "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.0.tgz", 38 | "integrity": "sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==", 39 | "dependencies": { 40 | "@noble/hashes": "1.4.0" 41 | }, 42 | "funding": { 43 | "url": "https://paulmillr.com/funding/" 44 | } 45 | }, 46 | "node_modules/@noble/hashes": { 47 | "version": "1.4.0", 48 | "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", 49 | "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", 50 | "engines": { 51 | "node": ">= 16" 52 | }, 53 | "funding": { 54 | "url": "https://paulmillr.com/funding/" 55 | } 56 | }, 57 | "node_modules/@openbook-dex/openbook": { 58 | "version": "0.0.9", 59 | "resolved": "https://registry.npmjs.org/@openbook-dex/openbook/-/openbook-0.0.9.tgz", 60 | "integrity": "sha512-tJPqHS7Tp/Gu3MC/MAZQBUm62WhdBPLzCcId3p62eHV6cRwNqflr0j+eKDh0Lfd5CAnkB1a9wZoVte074+zB5A==", 61 | "dependencies": { 62 | "@project-serum/anchor": "^0.11.1", 63 | "@solana/spl-token": "^0.1.6", 64 | "@solana/web3.js": "^1.70.0", 65 | "bn.js": "^5.2.1", 66 | "buffer-layout": "^1.2.0" 67 | }, 68 | "engines": { 69 | "node": ">=10" 70 | } 71 | }, 72 | "node_modules/@openbook-dex/openbook/node_modules/@solana/spl-token": { 73 | "version": "0.1.8", 74 | "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.1.8.tgz", 75 | "integrity": "sha512-LZmYCKcPQDtJgecvWOgT/cnoIQPWjdH+QVyzPcFvyDUiT0DiRjZaam4aqNUyvchLFhzgunv3d9xOoyE34ofdoQ==", 76 | "dependencies": { 77 | "@babel/runtime": "^7.10.5", 78 | "@solana/web3.js": "^1.21.0", 79 | "bn.js": "^5.1.0", 80 | "buffer": "6.0.3", 81 | "buffer-layout": "^1.2.0", 82 | "dotenv": "10.0.0" 83 | }, 84 | "engines": { 85 | "node": ">= 10" 86 | } 87 | }, 88 | "node_modules/@project-serum/anchor": { 89 | "version": "0.11.1", 90 | "resolved": "https://registry.npmjs.org/@project-serum/anchor/-/anchor-0.11.1.tgz", 91 | "integrity": "sha512-oIdm4vTJkUy6GmE6JgqDAuQPKI7XM4TPJkjtoIzp69RZe0iAD9JP2XHx7lV1jLdYXeYHqDXfBt3zcq7W91K6PA==", 92 | "dependencies": { 93 | "@project-serum/borsh": "^0.2.2", 94 | "@solana/web3.js": "^1.17.0", 95 | "base64-js": "^1.5.1", 96 | "bn.js": "^5.1.2", 97 | "bs58": "^4.0.1", 98 | "buffer-layout": "^1.2.0", 99 | "camelcase": "^5.3.1", 100 | "crypto-hash": "^1.3.0", 101 | "eventemitter3": "^4.0.7", 102 | "find": "^0.3.0", 103 | "js-sha256": "^0.9.0", 104 | "pako": "^2.0.3", 105 | "snake-case": "^3.0.4", 106 | "toml": "^3.0.0" 107 | }, 108 | "engines": { 109 | "node": ">=11" 110 | } 111 | }, 112 | "node_modules/@project-serum/anchor/node_modules/base-x": { 113 | "version": "3.0.9", 114 | "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", 115 | "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", 116 | "dependencies": { 117 | "safe-buffer": "^5.0.1" 118 | } 119 | }, 120 | "node_modules/@project-serum/anchor/node_modules/bs58": { 121 | "version": "4.0.1", 122 | "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", 123 | "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", 124 | "dependencies": { 125 | "base-x": "^3.0.2" 126 | } 127 | }, 128 | "node_modules/@project-serum/borsh": { 129 | "version": "0.2.5", 130 | "resolved": "https://registry.npmjs.org/@project-serum/borsh/-/borsh-0.2.5.tgz", 131 | "integrity": "sha512-UmeUkUoKdQ7rhx6Leve1SssMR/Ghv8qrEiyywyxSWg7ooV7StdpPBhciiy5eB3T0qU1BXvdRNC8TdrkxK7WC5Q==", 132 | "dependencies": { 133 | "bn.js": "^5.1.2", 134 | "buffer-layout": "^1.2.0" 135 | }, 136 | "engines": { 137 | "node": ">=10" 138 | }, 139 | "peerDependencies": { 140 | "@solana/web3.js": "^1.2.0" 141 | } 142 | }, 143 | "node_modules/@raydium-io/raydium-sdk": { 144 | "version": "1.3.1-beta.52", 145 | "resolved": "https://registry.npmjs.org/@raydium-io/raydium-sdk/-/raydium-sdk-1.3.1-beta.52.tgz", 146 | "integrity": "sha512-NnCIfmFLT5QZLjeMhAwEofNuzZEPAU7q2O0P0o67O1fsGdVq5HJgLL8bI6UMKX2d2Ed4MEz7ip2bSng2tHp+5w==", 147 | "dependencies": { 148 | "@solana/buffer-layout": "^4.0.1", 149 | "@solana/spl-token": "^0.3.9", 150 | "axios": "^1.6.2", 151 | "big.js": "^6.2.1", 152 | "bn.js": "^5.2.1", 153 | "decimal.js": "^10.4.3", 154 | "decimal.js-light": "^2.5.1", 155 | "fecha": "^4.2.3", 156 | "lodash": "^4.17.21", 157 | "toformat": "^2.0.0" 158 | }, 159 | "peerDependencies": { 160 | "@solana/web3.js": "^1.73.0" 161 | } 162 | }, 163 | "node_modules/@raydium-io/raydium-sdk/node_modules/@solana/spl-token": { 164 | "version": "0.3.11", 165 | "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.11.tgz", 166 | "integrity": "sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==", 167 | "dependencies": { 168 | "@solana/buffer-layout": "^4.0.0", 169 | "@solana/buffer-layout-utils": "^0.2.0", 170 | "@solana/spl-token-metadata": "^0.1.2", 171 | "buffer": "^6.0.3" 172 | }, 173 | "engines": { 174 | "node": ">=16" 175 | }, 176 | "peerDependencies": { 177 | "@solana/web3.js": "^1.88.0" 178 | } 179 | }, 180 | "node_modules/@solana/buffer-layout": { 181 | "version": "4.0.1", 182 | "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz", 183 | "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", 184 | "dependencies": { 185 | "buffer": "~6.0.3" 186 | }, 187 | "engines": { 188 | "node": ">=5.10" 189 | } 190 | }, 191 | "node_modules/@solana/buffer-layout-utils": { 192 | "version": "0.2.0", 193 | "resolved": "https://registry.npmjs.org/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz", 194 | "integrity": "sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==", 195 | "dependencies": { 196 | "@solana/buffer-layout": "^4.0.0", 197 | "@solana/web3.js": "^1.32.0", 198 | "bigint-buffer": "^1.1.5", 199 | "bignumber.js": "^9.0.1" 200 | }, 201 | "engines": { 202 | "node": ">= 10" 203 | } 204 | }, 205 | "node_modules/@solana/codecs": { 206 | "version": "2.0.0-preview.2", 207 | "resolved": "https://registry.npmjs.org/@solana/codecs/-/codecs-2.0.0-preview.2.tgz", 208 | "integrity": "sha512-4HHzCD5+pOSmSB71X6w9ptweV48Zj1Vqhe732+pcAQ2cMNnN0gMPMdDq7j3YwaZDZ7yrILVV/3+HTnfT77t2yA==", 209 | "dependencies": { 210 | "@solana/codecs-core": "2.0.0-preview.2", 211 | "@solana/codecs-data-structures": "2.0.0-preview.2", 212 | "@solana/codecs-numbers": "2.0.0-preview.2", 213 | "@solana/codecs-strings": "2.0.0-preview.2", 214 | "@solana/options": "2.0.0-preview.2" 215 | } 216 | }, 217 | "node_modules/@solana/codecs-core": { 218 | "version": "2.0.0-preview.2", 219 | "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.0.0-preview.2.tgz", 220 | "integrity": "sha512-gLhCJXieSCrAU7acUJjbXl+IbGnqovvxQLlimztPoGgfLQ1wFYu+XJswrEVQqknZYK1pgxpxH3rZ+OKFs0ndQg==", 221 | "dependencies": { 222 | "@solana/errors": "2.0.0-preview.2" 223 | } 224 | }, 225 | "node_modules/@solana/codecs-data-structures": { 226 | "version": "2.0.0-preview.2", 227 | "resolved": "https://registry.npmjs.org/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.2.tgz", 228 | "integrity": "sha512-Xf5vIfromOZo94Q8HbR04TbgTwzigqrKII0GjYr21K7rb3nba4hUW2ir8kguY7HWFBcjHGlU5x3MevKBOLp3Zg==", 229 | "dependencies": { 230 | "@solana/codecs-core": "2.0.0-preview.2", 231 | "@solana/codecs-numbers": "2.0.0-preview.2", 232 | "@solana/errors": "2.0.0-preview.2" 233 | } 234 | }, 235 | "node_modules/@solana/codecs-numbers": { 236 | "version": "2.0.0-preview.2", 237 | "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.2.tgz", 238 | "integrity": "sha512-aLZnDTf43z4qOnpTcDsUVy1Ci9im1Md8thWipSWbE+WM9ojZAx528oAql+Cv8M8N+6ALKwgVRhPZkto6E59ARw==", 239 | "dependencies": { 240 | "@solana/codecs-core": "2.0.0-preview.2", 241 | "@solana/errors": "2.0.0-preview.2" 242 | } 243 | }, 244 | "node_modules/@solana/codecs-strings": { 245 | "version": "2.0.0-preview.2", 246 | "resolved": "https://registry.npmjs.org/@solana/codecs-strings/-/codecs-strings-2.0.0-preview.2.tgz", 247 | "integrity": "sha512-EgBwY+lIaHHgMJIqVOGHfIfpdmmUDNoNO/GAUGeFPf+q0dF+DtwhJPEMShhzh64X2MeCZcmSO6Kinx0Bvmmz2g==", 248 | "dependencies": { 249 | "@solana/codecs-core": "2.0.0-preview.2", 250 | "@solana/codecs-numbers": "2.0.0-preview.2", 251 | "@solana/errors": "2.0.0-preview.2" 252 | }, 253 | "peerDependencies": { 254 | "fastestsmallesttextencoderdecoder": "^1.0.22" 255 | } 256 | }, 257 | "node_modules/@solana/errors": { 258 | "version": "2.0.0-preview.2", 259 | "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-2.0.0-preview.2.tgz", 260 | "integrity": "sha512-H2DZ1l3iYF5Rp5pPbJpmmtCauWeQXRJapkDg8epQ8BJ7cA2Ut/QEtC3CMmw/iMTcuS6uemFNLcWvlOfoQhvQuA==", 261 | "dependencies": { 262 | "chalk": "^5.3.0", 263 | "commander": "^12.0.0" 264 | }, 265 | "bin": { 266 | "errors": "bin/cli.js" 267 | } 268 | }, 269 | "node_modules/@solana/options": { 270 | "version": "2.0.0-preview.2", 271 | "resolved": "https://registry.npmjs.org/@solana/options/-/options-2.0.0-preview.2.tgz", 272 | "integrity": "sha512-FAHqEeH0cVsUOTzjl5OfUBw2cyT8d5Oekx4xcn5hn+NyPAfQJgM3CEThzgRD6Q/4mM5pVUnND3oK/Mt1RzSE/w==", 273 | "dependencies": { 274 | "@solana/codecs-core": "2.0.0-preview.2", 275 | "@solana/codecs-numbers": "2.0.0-preview.2" 276 | } 277 | }, 278 | "node_modules/@solana/spl-token": { 279 | "version": "0.4.6", 280 | "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.4.6.tgz", 281 | "integrity": "sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA==", 282 | "dependencies": { 283 | "@solana/buffer-layout": "^4.0.0", 284 | "@solana/buffer-layout-utils": "^0.2.0", 285 | "@solana/spl-token-group": "^0.0.4", 286 | "@solana/spl-token-metadata": "^0.1.4", 287 | "buffer": "^6.0.3" 288 | }, 289 | "engines": { 290 | "node": ">=16" 291 | }, 292 | "peerDependencies": { 293 | "@solana/web3.js": "^1.91.6" 294 | } 295 | }, 296 | "node_modules/@solana/spl-token-group": { 297 | "version": "0.0.4", 298 | "resolved": "https://registry.npmjs.org/@solana/spl-token-group/-/spl-token-group-0.0.4.tgz", 299 | "integrity": "sha512-7+80nrEMdUKlK37V6kOe024+T7J4nNss0F8LQ9OOPYdWCCfJmsGUzVx2W3oeizZR4IHM6N4yC9v1Xqwc3BTPWw==", 300 | "dependencies": { 301 | "@solana/codecs": "2.0.0-preview.2", 302 | "@solana/spl-type-length-value": "0.1.0" 303 | }, 304 | "engines": { 305 | "node": ">=16" 306 | }, 307 | "peerDependencies": { 308 | "@solana/web3.js": "^1.91.6" 309 | } 310 | }, 311 | "node_modules/@solana/spl-token-metadata": { 312 | "version": "0.1.4", 313 | "resolved": "https://registry.npmjs.org/@solana/spl-token-metadata/-/spl-token-metadata-0.1.4.tgz", 314 | "integrity": "sha512-N3gZ8DlW6NWDV28+vCCDJoTqaCZiF/jDUnk3o8GRkAFzHObiR60Bs1gXHBa8zCPdvOwiG6Z3dg5pg7+RW6XNsQ==", 315 | "dependencies": { 316 | "@solana/codecs": "2.0.0-preview.2", 317 | "@solana/spl-type-length-value": "0.1.0" 318 | }, 319 | "engines": { 320 | "node": ">=16" 321 | }, 322 | "peerDependencies": { 323 | "@solana/web3.js": "^1.91.6" 324 | } 325 | }, 326 | "node_modules/@solana/spl-type-length-value": { 327 | "version": "0.1.0", 328 | "resolved": "https://registry.npmjs.org/@solana/spl-type-length-value/-/spl-type-length-value-0.1.0.tgz", 329 | "integrity": "sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA==", 330 | "dependencies": { 331 | "buffer": "^6.0.3" 332 | }, 333 | "engines": { 334 | "node": ">=16" 335 | } 336 | }, 337 | "node_modules/@solana/web3.js": { 338 | "version": "1.91.8", 339 | "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.91.8.tgz", 340 | "integrity": "sha512-USa6OS1jbh8zOapRJ/CBZImZ8Xb7AJjROZl5adql9TpOoBN9BUzyyouS5oPuZHft7S7eB8uJPuXWYjMi6BHgOw==", 341 | "dependencies": { 342 | "@babel/runtime": "^7.24.5", 343 | "@noble/curves": "^1.4.0", 344 | "@noble/hashes": "^1.4.0", 345 | "@solana/buffer-layout": "^4.0.1", 346 | "agentkeepalive": "^4.5.0", 347 | "bigint-buffer": "^1.1.5", 348 | "bn.js": "^5.2.1", 349 | "borsh": "^0.7.0", 350 | "bs58": "^4.0.1", 351 | "buffer": "6.0.3", 352 | "fast-stable-stringify": "^1.0.0", 353 | "jayson": "^4.1.0", 354 | "node-fetch": "^2.7.0", 355 | "rpc-websockets": "^7.11.0", 356 | "superstruct": "^0.14.2" 357 | } 358 | }, 359 | "node_modules/@solana/web3.js/node_modules/base-x": { 360 | "version": "3.0.9", 361 | "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", 362 | "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", 363 | "dependencies": { 364 | "safe-buffer": "^5.0.1" 365 | } 366 | }, 367 | "node_modules/@solana/web3.js/node_modules/bs58": { 368 | "version": "4.0.1", 369 | "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", 370 | "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", 371 | "dependencies": { 372 | "base-x": "^3.0.2" 373 | } 374 | }, 375 | "node_modules/@types/connect": { 376 | "version": "3.4.38", 377 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", 378 | "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", 379 | "dependencies": { 380 | "@types/node": "*" 381 | } 382 | }, 383 | "node_modules/@types/node": { 384 | "version": "12.20.55", 385 | "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", 386 | "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" 387 | }, 388 | "node_modules/@types/ws": { 389 | "version": "7.4.7", 390 | "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", 391 | "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", 392 | "dependencies": { 393 | "@types/node": "*" 394 | } 395 | }, 396 | "node_modules/agentkeepalive": { 397 | "version": "4.5.0", 398 | "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", 399 | "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", 400 | "dependencies": { 401 | "humanize-ms": "^1.2.1" 402 | }, 403 | "engines": { 404 | "node": ">= 8.0.0" 405 | } 406 | }, 407 | "node_modules/asynckit": { 408 | "version": "0.4.0", 409 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 410 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 411 | }, 412 | "node_modules/axios": { 413 | "version": "1.6.8", 414 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", 415 | "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", 416 | "dependencies": { 417 | "follow-redirects": "^1.15.6", 418 | "form-data": "^4.0.0", 419 | "proxy-from-env": "^1.1.0" 420 | } 421 | }, 422 | "node_modules/base-x": { 423 | "version": "4.0.0", 424 | "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", 425 | "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" 426 | }, 427 | "node_modules/base64-js": { 428 | "version": "1.5.1", 429 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 430 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 431 | "funding": [ 432 | { 433 | "type": "github", 434 | "url": "https://github.com/sponsors/feross" 435 | }, 436 | { 437 | "type": "patreon", 438 | "url": "https://www.patreon.com/feross" 439 | }, 440 | { 441 | "type": "consulting", 442 | "url": "https://feross.org/support" 443 | } 444 | ] 445 | }, 446 | "node_modules/big.js": { 447 | "version": "6.2.1", 448 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.1.tgz", 449 | "integrity": "sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==", 450 | "engines": { 451 | "node": "*" 452 | }, 453 | "funding": { 454 | "type": "opencollective", 455 | "url": "https://opencollective.com/bigjs" 456 | } 457 | }, 458 | "node_modules/bigint-buffer": { 459 | "version": "1.1.5", 460 | "resolved": "https://registry.npmjs.org/bigint-buffer/-/bigint-buffer-1.1.5.tgz", 461 | "integrity": "sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==", 462 | "hasInstallScript": true, 463 | "dependencies": { 464 | "bindings": "^1.3.0" 465 | }, 466 | "engines": { 467 | "node": ">= 10.0.0" 468 | } 469 | }, 470 | "node_modules/bignumber.js": { 471 | "version": "9.1.2", 472 | "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", 473 | "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", 474 | "engines": { 475 | "node": "*" 476 | } 477 | }, 478 | "node_modules/bindings": { 479 | "version": "1.5.0", 480 | "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", 481 | "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", 482 | "dependencies": { 483 | "file-uri-to-path": "1.0.0" 484 | } 485 | }, 486 | "node_modules/bn.js": { 487 | "version": "5.2.1", 488 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", 489 | "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" 490 | }, 491 | "node_modules/borsh": { 492 | "version": "0.7.0", 493 | "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", 494 | "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", 495 | "dependencies": { 496 | "bn.js": "^5.2.0", 497 | "bs58": "^4.0.0", 498 | "text-encoding-utf-8": "^1.0.2" 499 | } 500 | }, 501 | "node_modules/borsh/node_modules/base-x": { 502 | "version": "3.0.9", 503 | "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", 504 | "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", 505 | "dependencies": { 506 | "safe-buffer": "^5.0.1" 507 | } 508 | }, 509 | "node_modules/borsh/node_modules/bs58": { 510 | "version": "4.0.1", 511 | "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", 512 | "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", 513 | "dependencies": { 514 | "base-x": "^3.0.2" 515 | } 516 | }, 517 | "node_modules/bs58": { 518 | "version": "5.0.0", 519 | "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", 520 | "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", 521 | "dependencies": { 522 | "base-x": "^4.0.0" 523 | } 524 | }, 525 | "node_modules/buffer": { 526 | "version": "6.0.3", 527 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", 528 | "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", 529 | "funding": [ 530 | { 531 | "type": "github", 532 | "url": "https://github.com/sponsors/feross" 533 | }, 534 | { 535 | "type": "patreon", 536 | "url": "https://www.patreon.com/feross" 537 | }, 538 | { 539 | "type": "consulting", 540 | "url": "https://feross.org/support" 541 | } 542 | ], 543 | "dependencies": { 544 | "base64-js": "^1.3.1", 545 | "ieee754": "^1.2.1" 546 | } 547 | }, 548 | "node_modules/buffer-layout": { 549 | "version": "1.2.2", 550 | "resolved": "https://registry.npmjs.org/buffer-layout/-/buffer-layout-1.2.2.tgz", 551 | "integrity": "sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==", 552 | "engines": { 553 | "node": ">=4.5" 554 | } 555 | }, 556 | "node_modules/bufferutil": { 557 | "version": "4.0.8", 558 | "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", 559 | "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", 560 | "hasInstallScript": true, 561 | "optional": true, 562 | "dependencies": { 563 | "node-gyp-build": "^4.3.0" 564 | }, 565 | "engines": { 566 | "node": ">=6.14.2" 567 | } 568 | }, 569 | "node_modules/camelcase": { 570 | "version": "5.3.1", 571 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 572 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 573 | "engines": { 574 | "node": ">=6" 575 | } 576 | }, 577 | "node_modules/chalk": { 578 | "version": "5.3.0", 579 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", 580 | "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", 581 | "engines": { 582 | "node": "^12.17.0 || ^14.13 || >=16.0.0" 583 | }, 584 | "funding": { 585 | "url": "https://github.com/chalk/chalk?sponsor=1" 586 | } 587 | }, 588 | "node_modules/combined-stream": { 589 | "version": "1.0.8", 590 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 591 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 592 | "dependencies": { 593 | "delayed-stream": "~1.0.0" 594 | }, 595 | "engines": { 596 | "node": ">= 0.8" 597 | } 598 | }, 599 | "node_modules/commander": { 600 | "version": "12.0.0", 601 | "resolved": "https://registry.npmjs.org/commander/-/commander-12.0.0.tgz", 602 | "integrity": "sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==", 603 | "engines": { 604 | "node": ">=18" 605 | } 606 | }, 607 | "node_modules/crypto-hash": { 608 | "version": "1.3.0", 609 | "resolved": "https://registry.npmjs.org/crypto-hash/-/crypto-hash-1.3.0.tgz", 610 | "integrity": "sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==", 611 | "engines": { 612 | "node": ">=8" 613 | }, 614 | "funding": { 615 | "url": "https://github.com/sponsors/sindresorhus" 616 | } 617 | }, 618 | "node_modules/decimal.js": { 619 | "version": "10.4.3", 620 | "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", 621 | "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" 622 | }, 623 | "node_modules/decimal.js-light": { 624 | "version": "2.5.1", 625 | "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", 626 | "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" 627 | }, 628 | "node_modules/delay": { 629 | "version": "5.0.0", 630 | "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", 631 | "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", 632 | "engines": { 633 | "node": ">=10" 634 | }, 635 | "funding": { 636 | "url": "https://github.com/sponsors/sindresorhus" 637 | } 638 | }, 639 | "node_modules/delayed-stream": { 640 | "version": "1.0.0", 641 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 642 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 643 | "engines": { 644 | "node": ">=0.4.0" 645 | } 646 | }, 647 | "node_modules/dot-case": { 648 | "version": "3.0.4", 649 | "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", 650 | "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", 651 | "dependencies": { 652 | "no-case": "^3.0.4", 653 | "tslib": "^2.0.3" 654 | } 655 | }, 656 | "node_modules/dotenv": { 657 | "version": "10.0.0", 658 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", 659 | "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", 660 | "engines": { 661 | "node": ">=10" 662 | } 663 | }, 664 | "node_modules/es6-promise": { 665 | "version": "4.2.8", 666 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", 667 | "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" 668 | }, 669 | "node_modules/es6-promisify": { 670 | "version": "5.0.0", 671 | "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", 672 | "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", 673 | "dependencies": { 674 | "es6-promise": "^4.0.3" 675 | } 676 | }, 677 | "node_modules/eventemitter3": { 678 | "version": "4.0.7", 679 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", 680 | "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" 681 | }, 682 | "node_modules/eyes": { 683 | "version": "0.1.8", 684 | "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", 685 | "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", 686 | "engines": { 687 | "node": "> 0.1.90" 688 | } 689 | }, 690 | "node_modules/fast-stable-stringify": { 691 | "version": "1.0.0", 692 | "resolved": "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz", 693 | "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==" 694 | }, 695 | "node_modules/fastestsmallesttextencoderdecoder": { 696 | "version": "1.0.22", 697 | "resolved": "https://registry.npmjs.org/fastestsmallesttextencoderdecoder/-/fastestsmallesttextencoderdecoder-1.0.22.tgz", 698 | "integrity": "sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==", 699 | "peer": true 700 | }, 701 | "node_modules/fecha": { 702 | "version": "4.2.3", 703 | "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", 704 | "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" 705 | }, 706 | "node_modules/file-uri-to-path": { 707 | "version": "1.0.0", 708 | "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", 709 | "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" 710 | }, 711 | "node_modules/find": { 712 | "version": "0.3.0", 713 | "resolved": "https://registry.npmjs.org/find/-/find-0.3.0.tgz", 714 | "integrity": "sha512-iSd+O4OEYV/I36Zl8MdYJO0xD82wH528SaCieTVHhclgiYNe9y+yPKSwK+A7/WsmHL1EZ+pYUJBXWTL5qofksw==", 715 | "dependencies": { 716 | "traverse-chain": "~0.1.0" 717 | } 718 | }, 719 | "node_modules/follow-redirects": { 720 | "version": "1.15.6", 721 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", 722 | "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", 723 | "funding": [ 724 | { 725 | "type": "individual", 726 | "url": "https://github.com/sponsors/RubenVerborgh" 727 | } 728 | ], 729 | "engines": { 730 | "node": ">=4.0" 731 | }, 732 | "peerDependenciesMeta": { 733 | "debug": { 734 | "optional": true 735 | } 736 | } 737 | }, 738 | "node_modules/form-data": { 739 | "version": "4.0.0", 740 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 741 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 742 | "dependencies": { 743 | "asynckit": "^0.4.0", 744 | "combined-stream": "^1.0.8", 745 | "mime-types": "^2.1.12" 746 | }, 747 | "engines": { 748 | "node": ">= 6" 749 | } 750 | }, 751 | "node_modules/humanize-ms": { 752 | "version": "1.2.1", 753 | "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", 754 | "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", 755 | "dependencies": { 756 | "ms": "^2.0.0" 757 | } 758 | }, 759 | "node_modules/ieee754": { 760 | "version": "1.2.1", 761 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 762 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 763 | "funding": [ 764 | { 765 | "type": "github", 766 | "url": "https://github.com/sponsors/feross" 767 | }, 768 | { 769 | "type": "patreon", 770 | "url": "https://www.patreon.com/feross" 771 | }, 772 | { 773 | "type": "consulting", 774 | "url": "https://feross.org/support" 775 | } 776 | ] 777 | }, 778 | "node_modules/isomorphic-ws": { 779 | "version": "4.0.1", 780 | "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", 781 | "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", 782 | "peerDependencies": { 783 | "ws": "*" 784 | } 785 | }, 786 | "node_modules/jayson": { 787 | "version": "4.1.0", 788 | "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.0.tgz", 789 | "integrity": "sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==", 790 | "dependencies": { 791 | "@types/connect": "^3.4.33", 792 | "@types/node": "^12.12.54", 793 | "@types/ws": "^7.4.4", 794 | "commander": "^2.20.3", 795 | "delay": "^5.0.0", 796 | "es6-promisify": "^5.0.0", 797 | "eyes": "^0.1.8", 798 | "isomorphic-ws": "^4.0.1", 799 | "json-stringify-safe": "^5.0.1", 800 | "JSONStream": "^1.3.5", 801 | "uuid": "^8.3.2", 802 | "ws": "^7.4.5" 803 | }, 804 | "bin": { 805 | "jayson": "bin/jayson.js" 806 | }, 807 | "engines": { 808 | "node": ">=8" 809 | } 810 | }, 811 | "node_modules/jayson/node_modules/commander": { 812 | "version": "2.20.3", 813 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 814 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 815 | }, 816 | "node_modules/js-sha256": { 817 | "version": "0.9.0", 818 | "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", 819 | "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==" 820 | }, 821 | "node_modules/json-stringify-safe": { 822 | "version": "5.0.1", 823 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 824 | "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" 825 | }, 826 | "node_modules/jsonparse": { 827 | "version": "1.3.1", 828 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", 829 | "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", 830 | "engines": [ 831 | "node >= 0.2.0" 832 | ] 833 | }, 834 | "node_modules/JSONStream": { 835 | "version": "1.3.5", 836 | "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", 837 | "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", 838 | "dependencies": { 839 | "jsonparse": "^1.2.0", 840 | "through": ">=2.2.7 <3" 841 | }, 842 | "bin": { 843 | "JSONStream": "bin.js" 844 | }, 845 | "engines": { 846 | "node": "*" 847 | } 848 | }, 849 | "node_modules/lodash": { 850 | "version": "4.17.21", 851 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 852 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 853 | }, 854 | "node_modules/lower-case": { 855 | "version": "2.0.2", 856 | "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", 857 | "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", 858 | "dependencies": { 859 | "tslib": "^2.0.3" 860 | } 861 | }, 862 | "node_modules/mime-db": { 863 | "version": "1.52.0", 864 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 865 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 866 | "engines": { 867 | "node": ">= 0.6" 868 | } 869 | }, 870 | "node_modules/mime-types": { 871 | "version": "2.1.35", 872 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 873 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 874 | "dependencies": { 875 | "mime-db": "1.52.0" 876 | }, 877 | "engines": { 878 | "node": ">= 0.6" 879 | } 880 | }, 881 | "node_modules/ms": { 882 | "version": "2.1.3", 883 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 884 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 885 | }, 886 | "node_modules/no-case": { 887 | "version": "3.0.4", 888 | "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", 889 | "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", 890 | "dependencies": { 891 | "lower-case": "^2.0.2", 892 | "tslib": "^2.0.3" 893 | } 894 | }, 895 | "node_modules/node-fetch": { 896 | "version": "2.7.0", 897 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", 898 | "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", 899 | "dependencies": { 900 | "whatwg-url": "^5.0.0" 901 | }, 902 | "engines": { 903 | "node": "4.x || >=6.0.0" 904 | }, 905 | "peerDependencies": { 906 | "encoding": "^0.1.0" 907 | }, 908 | "peerDependenciesMeta": { 909 | "encoding": { 910 | "optional": true 911 | } 912 | } 913 | }, 914 | "node_modules/node-gyp-build": { 915 | "version": "4.8.1", 916 | "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", 917 | "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", 918 | "optional": true, 919 | "bin": { 920 | "node-gyp-build": "bin.js", 921 | "node-gyp-build-optional": "optional.js", 922 | "node-gyp-build-test": "build-test.js" 923 | } 924 | }, 925 | "node_modules/pako": { 926 | "version": "2.1.0", 927 | "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", 928 | "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" 929 | }, 930 | "node_modules/proxy-from-env": { 931 | "version": "1.1.0", 932 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 933 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 934 | }, 935 | "node_modules/regenerator-runtime": { 936 | "version": "0.14.1", 937 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", 938 | "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" 939 | }, 940 | "node_modules/rpc-websockets": { 941 | "version": "7.11.0", 942 | "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.11.0.tgz", 943 | "integrity": "sha512-IkLYjayPv6Io8C/TdCL5gwgzd1hFz2vmBZrjMw/SPEXo51ETOhnzgS4Qy5GWi2JQN7HKHa66J3+2mv0fgNh/7w==", 944 | "dependencies": { 945 | "eventemitter3": "^4.0.7", 946 | "uuid": "^8.3.2", 947 | "ws": "^8.5.0" 948 | }, 949 | "funding": { 950 | "type": "paypal", 951 | "url": "https://paypal.me/kozjak" 952 | }, 953 | "optionalDependencies": { 954 | "bufferutil": "^4.0.1", 955 | "utf-8-validate": "^5.0.2" 956 | } 957 | }, 958 | "node_modules/rpc-websockets/node_modules/ws": { 959 | "version": "8.17.0", 960 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", 961 | "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", 962 | "engines": { 963 | "node": ">=10.0.0" 964 | }, 965 | "peerDependencies": { 966 | "bufferutil": "^4.0.1", 967 | "utf-8-validate": ">=5.0.2" 968 | }, 969 | "peerDependenciesMeta": { 970 | "bufferutil": { 971 | "optional": true 972 | }, 973 | "utf-8-validate": { 974 | "optional": true 975 | } 976 | } 977 | }, 978 | "node_modules/safe-buffer": { 979 | "version": "5.2.1", 980 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 981 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 982 | "funding": [ 983 | { 984 | "type": "github", 985 | "url": "https://github.com/sponsors/feross" 986 | }, 987 | { 988 | "type": "patreon", 989 | "url": "https://www.patreon.com/feross" 990 | }, 991 | { 992 | "type": "consulting", 993 | "url": "https://feross.org/support" 994 | } 995 | ] 996 | }, 997 | "node_modules/snake-case": { 998 | "version": "3.0.4", 999 | "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", 1000 | "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", 1001 | "dependencies": { 1002 | "dot-case": "^3.0.4", 1003 | "tslib": "^2.0.3" 1004 | } 1005 | }, 1006 | "node_modules/superstruct": { 1007 | "version": "0.14.2", 1008 | "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz", 1009 | "integrity": "sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==" 1010 | }, 1011 | "node_modules/text-encoding-utf-8": { 1012 | "version": "1.0.2", 1013 | "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", 1014 | "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" 1015 | }, 1016 | "node_modules/through": { 1017 | "version": "2.3.8", 1018 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1019 | "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" 1020 | }, 1021 | "node_modules/toformat": { 1022 | "version": "2.0.0", 1023 | "resolved": "https://registry.npmjs.org/toformat/-/toformat-2.0.0.tgz", 1024 | "integrity": "sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ==" 1025 | }, 1026 | "node_modules/toml": { 1027 | "version": "3.0.0", 1028 | "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", 1029 | "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" 1030 | }, 1031 | "node_modules/tr46": { 1032 | "version": "0.0.3", 1033 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1034 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 1035 | }, 1036 | "node_modules/traverse-chain": { 1037 | "version": "0.1.0", 1038 | "resolved": "https://registry.npmjs.org/traverse-chain/-/traverse-chain-0.1.0.tgz", 1039 | "integrity": "sha512-up6Yvai4PYKhpNp5PkYtx50m3KbwQrqDwbuZP/ItyL64YEWHAvH6Md83LFLV/GRSk/BoUVwwgUzX6SOQSbsfAg==" 1040 | }, 1041 | "node_modules/tslib": { 1042 | "version": "2.6.2", 1043 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", 1044 | "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" 1045 | }, 1046 | "node_modules/typescript": { 1047 | "version": "5.4.5", 1048 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", 1049 | "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", 1050 | "dev": true, 1051 | "bin": { 1052 | "tsc": "bin/tsc", 1053 | "tsserver": "bin/tsserver" 1054 | }, 1055 | "engines": { 1056 | "node": ">=14.17" 1057 | } 1058 | }, 1059 | "node_modules/utf-8-validate": { 1060 | "version": "5.0.10", 1061 | "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", 1062 | "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", 1063 | "hasInstallScript": true, 1064 | "optional": true, 1065 | "dependencies": { 1066 | "node-gyp-build": "^4.3.0" 1067 | }, 1068 | "engines": { 1069 | "node": ">=6.14.2" 1070 | } 1071 | }, 1072 | "node_modules/uuid": { 1073 | "version": "8.3.2", 1074 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 1075 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", 1076 | "bin": { 1077 | "uuid": "dist/bin/uuid" 1078 | } 1079 | }, 1080 | "node_modules/webidl-conversions": { 1081 | "version": "3.0.1", 1082 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1083 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 1084 | }, 1085 | "node_modules/whatwg-url": { 1086 | "version": "5.0.0", 1087 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1088 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 1089 | "dependencies": { 1090 | "tr46": "~0.0.3", 1091 | "webidl-conversions": "^3.0.0" 1092 | } 1093 | }, 1094 | "node_modules/ws": { 1095 | "version": "7.5.9", 1096 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", 1097 | "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", 1098 | "engines": { 1099 | "node": ">=8.3.0" 1100 | }, 1101 | "peerDependencies": { 1102 | "bufferutil": "^4.0.1", 1103 | "utf-8-validate": "^5.0.2" 1104 | }, 1105 | "peerDependenciesMeta": { 1106 | "bufferutil": { 1107 | "optional": true 1108 | }, 1109 | "utf-8-validate": { 1110 | "optional": true 1111 | } 1112 | } 1113 | } 1114 | } 1115 | } 1116 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pump-fun-token-launcher", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "devDependencies": { 13 | "typescript": "^5.4.5" 14 | }, 15 | "dependencies": { 16 | "@openbook-dex/openbook": "^0.0.9", 17 | "@raydium-io/raydium-sdk": "^1.3.1-beta.52", 18 | "@solana/spl-token": "^0.4.6", 19 | "@solana/web3.js": "^1.91.8", 20 | "axios": "^1.6.8", 21 | "bs58": "^5.0.0", 22 | "buffer-layout": "^1.2.2" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/constants.ts: -------------------------------------------------------------------------------- 1 | import { PublicKey, SystemProgram, SYSVAR_RENT_PUBKEY } from '@solana/web3.js'; 2 | 3 | export const GLOBAL = new PublicKey("4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf"); 4 | export const SYSTEM_PROGRAM = SystemProgram.programId; 5 | export const RENT = SYSVAR_RENT_PUBKEY; 6 | export const PUMP_FUN_PROGRAM = new PublicKey("6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"); 7 | export const PUMP_FUN_ACCOUNT = new PublicKey("Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1") 8 | export const MPL_TOKEN_METADATA = new PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"); 9 | export const MINT_AUTHORITY = new PublicKey("TSLvdd1pWpHVjahSpsvCXUbgwsL3JAcvokwaKt1eokM"); 10 | export const COMPUTE_BUDGET_PROGRAM_ID = new PublicKey("ComputeBudget111111111111111111111111111111"); -------------------------------------------------------------------------------- /src/launch.ts: -------------------------------------------------------------------------------- 1 | import { getKeyPairFromPrivateKey, createTransaction, sendAndConfirmTransactionWrapper, bufferFromUInt64, bufferFromString } from './utils'; 2 | import web3, { Connection, Keypair, PublicKey, clusterApiUrl } from '@solana/web3.js'; 3 | import { TOKEN_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID } from '@solana/spl-token'; 4 | import { COMPUTE_BUDGET_PROGRAM_ID, GLOBAL, MINT_AUTHORITY, MPL_TOKEN_METADATA, PUMP_FUN_ACCOUNT, PUMP_FUN_PROGRAM, RENT, SYSTEM_PROGRAM } from './constants'; 5 | 6 | export async function launchToken(deployerPrivatekey: string, name: string, symbol: string, uri: string) { 7 | const connection = new Connection( 8 | clusterApiUrl("mainnet-beta"), 9 | 'confirmed' 10 | ); 11 | 12 | const payer = await getKeyPairFromPrivateKey(deployerPrivatekey); 13 | const owner = payer.publicKey; 14 | 15 | //Create new wallet to be used as mint 16 | const mint = Keypair.generate(); 17 | 18 | const [bondingCurve, bondingCurveBump] = await PublicKey.findProgramAddress( 19 | [Buffer.from("bonding-curve"), mint.publicKey.toBuffer()], 20 | PUMP_FUN_PROGRAM 21 | ); 22 | 23 | const [associatedBondingCurve, associatedBondingCurveBump] = PublicKey.findProgramAddressSync( 24 | [ 25 | bondingCurve.toBuffer(), 26 | new PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA").toBuffer(), 27 | mint.publicKey.toBuffer() 28 | ], 29 | new PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL") 30 | ); 31 | 32 | const [metadata, metadataBump] = await PublicKey.findProgramAddress( 33 | [Buffer.from("metadata"), MPL_TOKEN_METADATA.toBuffer(), mint.publicKey.toBuffer()], 34 | MPL_TOKEN_METADATA 35 | ); 36 | 37 | const txBuilder = new web3.Transaction(); 38 | 39 | // Adding the Compute Budget instruction 40 | const computeBudgetInstruction = new web3.TransactionInstruction({ 41 | keys: [], 42 | programId: COMPUTE_BUDGET_PROGRAM_ID, 43 | data: Buffer.concat([ 44 | Buffer.from(Uint8Array.of(3)), // discriminator for SetComputeUnitPrice 45 | bufferFromUInt64(100000) // microLamports 46 | ]) 47 | }); 48 | 49 | txBuilder.add(computeBudgetInstruction); 50 | 51 | const keys = [ 52 | { pubkey: mint.publicKey, isSigner: true, isWritable: true }, // Mint account 53 | { pubkey: MINT_AUTHORITY, isSigner: false, isWritable: false }, // Mint authority 54 | { pubkey: bondingCurve, isSigner: false, isWritable: true }, // Bonding curve PDA 55 | { pubkey: associatedBondingCurve, isSigner: false, isWritable: true }, // Associated bonding curve PDA 56 | { pubkey: GLOBAL, isSigner: false, isWritable: false }, // Global config 57 | { pubkey: MPL_TOKEN_METADATA, isSigner: false, isWritable: false }, // Metadata program ID 58 | { pubkey: metadata, isSigner: false, isWritable: true }, // Metadata PDA 59 | { pubkey: owner, isSigner: true, isWritable: true }, // Owner account 60 | { pubkey: SYSTEM_PROGRAM, isSigner: false, isWritable: false }, // System program 61 | { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, // Token program 62 | { pubkey: ASSOCIATED_TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }, // Associated token account program 63 | { pubkey: RENT, isSigner: false, isWritable: false }, // Rent sysvar 64 | { pubkey: PUMP_FUN_ACCOUNT, isSigner: false, isWritable: false }, // Pump fun account 65 | { pubkey: PUMP_FUN_PROGRAM, isSigner: false, isWritable: false } // Pump fun program ID 66 | ]; 67 | 68 | const nameBuffer = bufferFromString(name); 69 | const symbolBuffer = bufferFromString(symbol); 70 | const uriBuffer = bufferFromString(uri); 71 | const deployerBuffer = bufferFromString(payer.publicKey.toString()); 72 | 73 | const data = Buffer.concat([ 74 | Buffer.from("181ec828051c0777", "hex"), 75 | nameBuffer, 76 | symbolBuffer, 77 | uriBuffer, 78 | deployerBuffer 79 | ]); 80 | 81 | const instruction = new web3.TransactionInstruction({ 82 | keys: keys, 83 | programId: PUMP_FUN_PROGRAM, 84 | data: data 85 | }); 86 | 87 | txBuilder.add(instruction); 88 | 89 | const transaction = await createTransaction(connection, txBuilder.instructions, payer.publicKey); 90 | const signature = await sendAndConfirmTransactionWrapper(connection, transaction, [payer, mint]); 91 | console.log(`Tx confirmed with signature: ${signature}`) 92 | } -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | import { Keypair } from '@solana/web3.js'; 2 | import { Connection, PublicKey, Transaction, TransactionInstruction, sendAndConfirmTransaction } from '@solana/web3.js'; 3 | import bs58 from 'bs58'; 4 | import { sha256 } from '@noble/hashes/sha256' 5 | import { TOKEN_PROGRAM_ID } from '@solana/spl-token' 6 | 7 | export async function getKeyPairFromPrivateKey(key: string) { 8 | return Keypair.fromSecretKey( 9 | new Uint8Array(bs58.decode(key)) 10 | ); 11 | } 12 | 13 | export async function createTransaction(connection: Connection, instructions: TransactionInstruction[], payer: PublicKey): Promise { 14 | const transaction = new Transaction().add(...instructions); 15 | transaction.feePayer = payer; 16 | transaction.recentBlockhash = (await connection.getLatestBlockhash()).blockhash; 17 | return transaction; 18 | } 19 | 20 | export async function sendAndConfirmTransactionWrapper(connection: Connection, transaction: Transaction, signers: any[]) { 21 | try { 22 | const signature = await sendAndConfirmTransaction(connection, transaction, signers, { skipPreflight: true, preflightCommitment: 'confirmed' }); 23 | console.log('Transaction confirmed with signature:', signature); 24 | return signature; 25 | } catch (error) { 26 | console.error('Error sending transaction:', error); 27 | return null; 28 | } 29 | } 30 | 31 | export function bufferFromUInt64(value: number | string) { 32 | let buffer = Buffer.alloc(8); 33 | buffer.writeBigUInt64LE(BigInt(value)); 34 | return buffer; 35 | } 36 | 37 | export function generatePubKey({ 38 | fromPublicKey, 39 | programId = TOKEN_PROGRAM_ID, 40 | }: { 41 | fromPublicKey: PublicKey 42 | programId: PublicKey 43 | }) { 44 | const seed =Keypair.generate().publicKey.toBase58().slice(0, 32) 45 | 46 | const publicKey = createWithSeed(fromPublicKey, seed, programId) 47 | return { publicKey, seed } 48 | } 49 | 50 | function createWithSeed(fromPublicKey: PublicKey, seed: string, programId: PublicKey) { 51 | const buffer = Buffer.concat([fromPublicKey.toBuffer(), Buffer.from(seed), programId.toBuffer()]) 52 | const publicKeyBytes = sha256(buffer) 53 | return new PublicKey(publicKeyBytes) 54 | } 55 | 56 | export function bufferFromString(value: string) { 57 | const buffer = Buffer.alloc(4 + value.length); 58 | buffer.writeUInt32LE(value.length, 0); 59 | buffer.write(value, 4); 60 | return buffer; 61 | } -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig to read more about this file */ 4 | 5 | /* Projects */ 6 | // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ 7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 8 | // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ 9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ 10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 12 | 13 | /* Language and Environment */ 14 | "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ 15 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ 16 | // "jsx": "preserve", /* Specify what JSX code is generated. */ 17 | // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ 18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ 20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ 22 | // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ 23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 25 | // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ 26 | 27 | /* Modules */ 28 | "module": "commonjs", /* Specify what module code is generated. */ 29 | // "rootDir": "./", /* Specify the root folder within your source files. */ 30 | // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ 31 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 32 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 33 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 34 | // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ 35 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */ 36 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 37 | // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ 38 | // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ 39 | // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ 40 | // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ 41 | // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ 42 | // "resolveJsonModule": true, /* Enable importing .json files. */ 43 | // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ 44 | // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ 45 | 46 | /* JavaScript Support */ 47 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ 48 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ 49 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ 50 | 51 | /* Emit */ 52 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ 53 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 54 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 55 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 56 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 57 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ 58 | // "outDir": "./", /* Specify an output folder for all emitted files. */ 59 | // "removeComments": true, /* Disable emitting comments. */ 60 | // "noEmit": true, /* Disable emitting files from a compilation. */ 61 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 62 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ 63 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 64 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 65 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 66 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 67 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 68 | // "newLine": "crlf", /* Set the newline character for emitting files. */ 69 | // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ 70 | // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ 71 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 72 | // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ 73 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 74 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ 75 | 76 | /* Interop Constraints */ 77 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ 78 | // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ 79 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ 80 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ 81 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 82 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ 83 | 84 | /* Type Checking */ 85 | "strict": true, /* Enable all strict type-checking options. */ 86 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ 87 | // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ 88 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 89 | // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ 90 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 91 | // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ 92 | // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ 93 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 94 | // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ 95 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ 96 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 97 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 98 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 99 | // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ 100 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 101 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ 102 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 103 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 104 | 105 | /* Completeness */ 106 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 107 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 108 | } 109 | } 110 | --------------------------------------------------------------------------------