A comprehensive Solana trading library supporting multiple DEXs and MEV protection services
npm install solana-tradeA comprehensive, production-ready Solana trading library supporting 15+ DEXs with advanced MEV protection, built for both programmatic integration and CLI usage. Perfect for your trading bots / Solana dApps!



- 🏪 15+ DEX Support: Pump.fun, PumpSwap, Raydium (AMM/CLMM/CPMM/Launchpad), Orca, Meteora (DLMM/DAMM/DBC), Moonit, Heaven, Sugar, Boop.fun
- 🛡️ Advanced MEV Protection: Jito, Nozomi, Astralane with regional optimization
- ⚡ High Performance: Optimized transaction building with automatic pool discovery
- 🎯 Smart Routing: Intelligent provider selection based on tip amounts and availability
- 💻 Dual Interface: Full-featured programmatic API + powerful CLI
- 📦 TypeScript: Complete type definitions
- 🔧 Configurable: Extensive customization options for advanced users
- 📊 Transaction Control: Priority fees, slippage protection, simulation control
- 📈 Price & Curve Insight: Get price in SOL/lamports for any mint, plus bonding curve completion percent for launchpads
- 🌐 Multi-Region: Global MEV protection endpoints for optimal performance
PUMP_FUN |PUMP_SWAP |RAYDIUM_AMM |RAYDIUM_CLMM |RAYDIUM_CPMM |RAYDIUM_LAUNCHPAD |ORCA_WHIRLPOOL |METEORA_DLMM |METEORA_DAMM_V1 |METEORA_DAMM_V2 |METEORA_DBC |MOONIT |HEAVEN |SUGAR |BOOP_FUN |JITO_UUIDMAINNET, AMS, DUB, FRA, LON, NY, SLC, SG, TYONOZOMI_API_KEY (standard), NOZOMI_API_KEY_ANTIMEV (anti-MEV)PITT, TYO, SG, EWR, AMS, FRAASTRALANE_API_KEYFR, LAX, JP, NY, AMS, LIM``bash`
npm install solana-tradeor
yarn add solana-tradeor
pnpm add solana-trade
`typescript
import { SolanaTrade } from 'solana-trade';
import { Keypair } from '@solana/web3.js';
import bs58 from 'bs58';
// Initialize with custom RPC (optional)
const trader = new SolanaTrade('https://your-premium-rpc.com');
// Create wallet from private key
const wallet = Keypair.fromSecretKey(bs58.decode('your-private-key-base58'));
// Buy 0.1 SOL worth of tokens
const buySignature = await trader.buy({
market: 'PUMP_FUN',
wallet: wallet,
mint: 'So11111111111111111111111111111111111111112',
amount: 0.1,
slippage: 5, // 5%
sender: 'JITO', // Optional MEV protection
region: 'NY', // Optional region preference
antimev: true // Enable anti-MEV features
});
console.log('Buy transaction:', buySignature);
// Sell 1,000,000 tokens
const sellSignature = await trader.sell({
market: 'PUMP_FUN',
wallet: wallet,
mint: 'So11111111111111111111111111111111111111112',
amount: 1000000,
slippage: 5,
priorityFeeSol: 0.001, // Higher priority fee
tipAmountSol: 0.01 // MEV protection tip
});
console.log('Sell transaction:', sellSignature);
// Query spot price (SOL or lamports) & bonding curve percent
const { price, bondingCurvePercent } = await trader.price({
market: 'RAYDIUM_CPMM',
mint: 'TokenMintAddress',
unit: 'SOL' // or 'LAMPORTS'
});
console.log('Price (SOL):', price, 'Curve %:', bondingCurvePercent);
// Get transaction object without sending (Legacy Transaction)
const transaction = await trader.buy({
market: 'PUMP_FUN',
wallet: wallet,
mint: 'So11111111111111111111111111111111111111112',
amount: 0.1,
slippage: 5,
send: false // Returns Transaction object instead of sending
});
console.log('Transaction object:', transaction);
// You can then send it manually or modify it further
`
`bashInstall globally for CLI access
npm install -g solana-trade
📖 API Documentation
$3
#### Constructor
`typescript
new SolanaTrade(rpcUrl?: string)
`Parameters:
-
rpcUrl (optional): Custom RPC endpoint URL. Defaults to process.env.RPC_URL or Solana mainnet-beta.#### Methods
#####
buy(params: BuyParams): PromiseExecute a buy transaction.
Parameters:
`typescript
interface BuyParams {
market: string; // Market identifier (see supported markets)
wallet: Keypair; // Solana wallet keypair
mint: PublicKey | string; // Token mint address
amount: number; // SOL amount to spend
slippage: number; // Slippage tolerance (0-100)
priorityFeeSol?: number; // Priority fee in SOL (default: 0.0001)
tipAmountSol?: number; // MEV protection tip in SOL (default: 0)
poolAddress?: PublicKey | string; // Specific pool address (optional, will skip pool discovery if provided)
send?: boolean; // Whether to send transaction (default: true)
sender?: 'ASTRALANE' | 'NOZOMI' | 'JITO'; // MEV protection service
antimev?: boolean; // Enable anti-MEV features (default: false)
region?: string; // Preferred region for MEV service
skipSimulation?: boolean; // Skip transaction simulation (default: false)
skipConfirmation?: boolean; // Skip confirmation waiting (default: false)
additionalInstructions?: TransactionInstruction[]; // Appends right after market instructions
}
`#####
sell(params: SellParams): PromiseExecute a sell transaction. Same parameters as
buy(), except amount represents token quantity.#### Adding additional instructions
You can provide custom Solana
TransactionInstruction items via additionalInstructions. They will be appended immediately after the market swap instructions and before any provider tip instructions:`typescript
import { SystemProgram } from '@solana/web3.js';await trader.buy({
market: 'PUMP_FUN',
wallet,
mint: 'So11111111111111111111111111111111111111112',
amount: 0.1,
slippage: 5,
additionalInstructions: [
SystemProgram.transfer({
fromPubkey: wallet.publicKey,
toPubkey: wallet.publicKey, // example noop self-transfer
lamports: 1,
}),
],
});
`🌍 Environment Variables
$3
`bash
RPC Endpoint (optional, defaults to public mainnet)
RPC_URL=https://your-rpc-endpoint.com
`$3
`bash
Jito Labs
JITO_UUID=your-jito-uuidNozomi
NOZOMI_API_KEY=your-nozomi-api-key
NOZOMI_API_KEY_ANTIMEV=your-nozomi-antimev-key # Optional: for enhanced protectionAstralane
ASTRALANE_API_KEY=your-astralane-api-key
`$3
`bash
Milliseconds to wait for PumpSwap pool readiness before decoding
Prevents early "invalid account discriminator" during snipes/migrations
Default: 5000
PUMPSWAP_POOL_READY_TIMEOUT_MS=5000
`📝 CLI Reference
$3
- --market: Market identifier (see supported markets table)
- --direction: Transaction direction (buy or sell)
- --mint: Token mint address
- --amount: Amount (SOL for buy, tokens for sell)
- --slippage: Slippage tolerance (0-100)
- --private-key: Base58-encoded private key$3
- --priority-fee: Priority fee in SOL (default: 0.0001)
- --tip: MEV protection tip in SOL (default: 0)
- --pool-address: Specific pool address
- --sender: MEV protection service (JITO, NOZOMI, ASTRALANE)
- --antimev: Enable anti-MEV features (true, false)
- --region: Preferred region code
- --skip-simulation: Skip transaction simulation (true, false)
- --skip-confirmation: Skip confirmation waiting (true, false)🛠️ Error Handling
`typescript
try {
const result = await trader.buy({
market: 'PUMP_FUN',
wallet: wallet,
mint: 'invalid-mint-address',
amount: 0.1,
slippage: 5,
});
console.log('Success:', result);
} catch (error) {
if (error.message.includes('Simulation failed')) {
console.error('Transaction would fail:', error);
// Handle simulation failure
} else if (error.message.includes('HTTP')) {
console.error('Network error:', error);
// Handle network issues
} else {
console.error('Unknown error:', error);
// Handle other errors
}
}
`🤝 Contributing
We welcome contributions! Here's how you can help:
$3
`bash
git clone https://github.com/FlorianMgs/solana-trade.git
cd solana-trade
npm installBuild the project
npm run buildTest the CLI
npm run cli -- --help
`$3
1. Fork the repository and create your feature branch
2. Follow TypeScript best practices and existing code style
3. Update documentation for any API changes
4. Test thoroughly across different markets and scenarios
5. Submit a pull request with a clear description
$3
- 🚀 New DEX/Launchpad Integrations: We more than welcome new launchpads and DEXs to integrate their protocols into the project! This helps expand trading opportunities for all users.
- 🔥 Transaction senders: If you're running a transaction provider service, don't hesitate to add it!
- 📚 Documentation: Examples, tutorials, API documentation
- 🐛 Bug Reports: Issue identification and reproduction steps
- ✨ New Features: Optimization improvements, additional functionality
$3
New protocols are more than welcome! If you're a DEX or launchpad team looking to integrate:
1. Contact us via GitHub Issues or email to discuss integration
2. Provide SDK/API documentation for your protocol
3. Share test environments and pool addresses for testing
4. Collaborate on implementation - we'll help build the integration
5. Benefit from exposure to our user base once integrated
☕ Buy Me a Coffee
If this library helps your project, consider supporting its development:
$3
Address: CDuvRTHRaPFEQJYdHsEWpuE3yRB49Azi9e5g8Yi9Xm4d$3
- 🔬 Research & development: New DEX integrations, optimization
- 🛠️ Maintenance: Bug fixes, security updates, dependency management
- 📖 Documentation: Tutorials, examples, comprehensive guides
- 🆘 Support: Community assistance, issue resolution
The library includes a small 0.15% fee on buy transactions to support development (disable with
DISABLE_DEV_TIP=true` if needed). Your donations and keeping the fee active help maintain this project! 🙏MIT License - see the LICENSE file for details.
- GitHub: https://github.com/FlorianMgs/solana-trade
- NPM: https://www.npmjs.com/package/solana-trade
- Issues: https://github.com/FlorianMgs/solana-trade/issues
- Discussions: https://github.com/FlorianMgs/solana-trade/discussions
- 🐛 Bug Reports: GitHub Issues
- 💬 Discussions: GitHub Discussions
Important: Trading cryptocurrencies involves substantial risk of loss and is not suitable for all investors. This software is provided "as-is" without any warranties or guarantees. The authors and contributors are not responsible for any financial losses incurred through the use of this software.
Key Risks:
- Market Risk: Cryptocurrency prices are highly volatile
- Technical Risk: Smart contract bugs, network issues, transaction failures
- MEV Risk: Sandwich attacks, front-running despite protection measures
- Slippage Risk: Price movement during transaction execution
Best Practices:
- Only trade with funds you can afford to lose
- Test with small amounts first
- Understand the risks of each DEX and token
- Keep your private keys secure
- Monitor transactions carefully
---
Made with ❤️ by FlorianMgs (Madgic)
Pls leave a ⭐ star on GitHub!