Jupiter Perpetuals Rust Client
A Rust client for Jupiter Perpetuals Protocol, auto-generated from IDL using Codama.
🚀 Installation
Add to your Cargo.toml:
[]
= "1.0"
= "1.18" # For RPC functionality
🔧 Usage
Basic Example - Pool Data
use ;
use RpcClient;
use Pubkey;
use FromStr;
async
Example Output:
📛 Pool Name: Pool
🏦 Number of Custodies: 5
💰 AUM USD: $1553760440.14
🪙 Custody 1:
Token Mint: So11111111111111111111111111111111111111112
Assets Owned: 4376906755684259
Decimals: 9
Target Ratio: 4700 bps
🪙 Custody 2:
Token Mint: 7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs
Assets Owned: 3764241196893
Decimals: 8
Target Ratio: 800 bps
Environment Variables
You can customize the RPC endpoint using environment variables:
# Use a custom RPC endpoint
# Or run with inline environment variable
SOLANA_RPC_URL="https://your-rpc-endpoint.com"
On-chain Program Usage
use ;
// Use the generated types in your on-chain program
let pool_account = default;
📚 API Reference
Account Functions
Main Functions
fetch_perpetuals(rpc, address)- Get main protocol datafetch_pool(rpc, address)- Get liquidity pool datafetch_position(rpc, address)- Get position datafetch_custody(rpc, address)- Get token custody datafetch_token_ledger(rpc, address)- Get token ledger datafetch_position_request(rpc, address)- Get position request data
Batch Functions
fetch_all_perpetuals(rpc, addresses)- Fetch multiple protocol accountsfetch_all_pool(rpc, addresses)- Fetch multiple poolsfetch_all_position(rpc, addresses)- Fetch multiple positions
Safe Functions (Maybe variants)
fetch_maybe_perpetuals(rpc, address)- Safe protocol data fetchfetch_maybe_pool(rpc, address)- Safe pool data fetchfetch_maybe_position(rpc, address)- Safe position data fetch
Types
All data types are available:
use ;
Constants
use PERPETUALS_PROGRAM_ADDRESS;
println!;
🛠️ Features
- 🦀 Native Rust types with comprehensive traits
- 🔗 Full Anchor integration
- 📦 Borsh serialization support
- 🌐 RPC client functions (enabled by default)
- 🔄 Optional Serde support (enable
serdefeature)
Feature Flags
fetch(default) - Enables RPC client functions likefetch_pool(). Includessolana-clientandsolana-accountdependenciesserde- Enables JSON serialization/deserialization supportanchor- Additional Anchor-specific functionalityanchor-idl-build- IDL build support
For minimal on-chain usage without RPC dependencies:
[]
= { = "1.0", = false }
🛠️ Generated Client
This client is auto-generated from Jupiter Perpetuals IDL using Codama.
Requirements
- Rust ≥ 1.75.0
- Cargo
📄 License
MIT
🤝 Contributing
This client is auto-generated from Jupiter Perpetuals IDL files using Codama. For issues or feature requests, please visit the main repository.
🔗 Links
⚠️ Important Notes
- This client is designed for reading data from Jupiter Perpetuals
- For creating transactions, use the appropriate instructions from the
instructionsmodule - Always verify account addresses are current and valid
- Use reliable RPC endpoints for production applications
- The generated code includes comprehensive Rust documentation (rustdoc)
💰 Support
If this client helps you build amazing Solana applications, consider supporting the project:
Solana: uJHFSYDcCRH2c6VLXY1kWBqGFmBb7JbF7FN8bsGAFtx
Your support helps maintain and improve this package for the community!