{"id":28242073,"url":"https://github.com/furydotbot/rust-sdk","last_synced_at":"2025-07-25T05:34:53.268Z","repository":{"id":288557747,"uuid":"966180016","full_name":"furydotbot/rust-sdk","owner":"furydotbot","description":"How to USE 👇🏻","archived":false,"fork":false,"pushed_at":"2025-04-18T08:47:15.000Z","size":82,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-30T01:39:26.717Z","etag":null,"topics":["bundler","jupiter","moonshot","pumpfun","pumpswap","raydium","sdk","solana","solanabot","solanabundler","solanasdk"],"latest_commit_sha":null,"homepage":"https://docs.fury.bot/fury-sdk/sdk-for-rust","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/furydotbot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-14T14:22:33.000Z","updated_at":"2025-04-21T19:27:02.000Z","dependencies_parsed_at":"2025-04-18T21:27:13.161Z","dependency_job_id":"02a91e3f-e730-4851-a1ba-5a189ad23384","html_url":"https://github.com/furydotbot/rust-sdk","commit_stats":null,"previous_names":["furydotbot/rust-sdk"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/furydotbot/rust-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furydotbot%2Frust-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furydotbot%2Frust-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furydotbot%2Frust-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furydotbot%2Frust-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/furydotbot","download_url":"https://codeload.github.com/furydotbot/rust-sdk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furydotbot%2Frust-sdk/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266008651,"owners_count":23863542,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bundler","jupiter","moonshot","pumpfun","pumpswap","raydium","sdk","solana","solanabot","solanabundler","solanasdk"],"created_at":"2025-05-19T05:09:24.795Z","updated_at":"2025-07-25T05:34:53.261Z","avatar_url":"https://github.com/furydotbot.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FURY SDK for Rust\n\nA Rust client library for interacting with the FURY API service - a comprehensive toolkit for Solana token operations.\n\n## Features\n\n- **Complete API Coverage** - Access to all FURY API endpoints\n- **Type Safety** - Strong typing with Rust's type system\n- **Async Support** - Built on Tokio for efficient async operations\n- **Error Handling** - Comprehensive error handling with anyhow\n- **Validation** - Built-in parameter validation\n- **Solana Integration** - Native support for Solana transactions and signatures\n\n## Installation\n\n### Requirements\n\n- Rust 1.70+\n- Cargo package manager\n\n### Add to Your Project\n\nAdd the following to your `Cargo.toml`:\n\n```toml\n[dependencies]\nfury-sdk = \"0.1.0\"\n```\n\n## Quick Start\n\n```rust\nuse anyhow::Result;\nuse fury_sdk::sdk::FurySDK;\n\n#[tokio::main]\nasync fn main() -\u003e Result\u003c()\u003e {\n    let http_client = reqwest::Client::new();\n    let client = FurySDK::new(http_client);\n\n    // Generate a new mint key\n    let mint_key = client.generate_mint().await?;\n    println!(\"Generated mint key: {}\", mint_key.pubkey);\n\n    Ok(())\n}\n```\n\n## Usage Examples\n\n### Buy Tokens\n\n```rust\nuse anyhow::Result;\nuse anyhow::Result;\nuse fury_sdk::sdk::{FurySDK, BuyTokenRequest};\n\n#[tokio::main]\nasync fn main() -\u003e Result\u003c()\u003e {\n    let http_client = reqwest::Client::new();\n    let fury = FurySDK::new(http_client);\n\n    // Buy tokens\n    let result = fury.buy_token(\u0026BuyTokenRequest {\n        wallet_addresses: vec![\"FuRytmqsoo4mKQAhNXoB64JD4SsiVqxYkUKC6i1VaBot\".to_string()],\n        token_address: \"Bq5nFQ82jBYcFKRzUSximpCmCg5t8L8tVMqsn612pump\".to_string(),\n        sol_amount: 0.001,\n        protocol: fury::Protocol::Pumpfun,\n        jito_tip_lamports: Some(sol_to_lamports(0.001)),\n        amounts: None,\n        use_rpc: false,\n        affiliate_address: None,\n        affiliate_fee: None,\n        slippage_bps: None,\n    }).await?;\n\n    println!(\"Transaction data: {:?}\", result.transactions);\n    Ok(())\n}\n```\n\n### Complete Buy Flow with Transaction Signing\n\n```rust\nuse anyhow::Result;\nuse fury_sdk::sdk::{FurySDK, BuyTokenRequest, TransactionSendRequest};\nuse fury_sdk::utils::sign_transactions;\nuse solana_sdk::{signature::Keypair, signer::Signer};\n\n#[tokio::main]\nasync fn main() -\u003e Result\u003c()\u003e {\n    // Initialize SDK\n    let http_client = reqwest::Client::new();\n    let fury = FurySDK::new(http_client);\n\n    // Load wallet\n    let wallet = Keypair::from_base58_string(\"YOUR_PRIVATE_KEY_HERE\");\n\n    // Generate buy transaction\n    let buy_result = fury.buy_token(\u0026fury::BuyTokenRequest {\n        wallet_addresses: vec![wallet.pubkey().to_string()],\n        token_address: \"Bq5nFQ82jBYcFKRzUSximpCmCg5t8L8tVMqsn612pump\".to_string(),\n        sol_amount: 0.001,\n        protocol: fury::Protocol::Pumpfun,\n        jito_tip_lamports: Some(sol_to_lamports(0.001)),\n        amounts: None,\n        use_rpc: false,\n        affiliate_address: None,\n        affiliate_fee: None,\n        slippage_bps: None,\n    }).await?;\n\n    let signed_txs = sign_transactions(buy_result.transactions, vec![wallet]);\n\n    let send_result = fury\n        .jito_transaction_send(\u0026TransactionSendRequest {\n            transactions: signed_txs,\n            use_rpc: false,\n        })\n        .await?\n\n    println!(\"Transaction signatures: {:?}\", send_result.results);\n    Ok(())\n}\n```\n\n### Create a New Token\n\n```rust\nuse anyhow::Result;\nuse fury_sdk::sdk::{FurySDK, TokenCreationConfig, TokenCreation, TokenCreationMetadata, TokensCreateRequest};\n\n#[tokio::main]\nasync fn main() -\u003e Result\u003c()\u003e {\n    let http_client = reqwest::Client::new();\n    let fury = FurySDK::new(http_client);\n\n    let result = match client.tokens_create(\u0026TokensCreateRequest {\n        wallet_addresses: vec![\"5tqe3S1zsfAmT7L2Ru5gVJDaq4wUB7AbCpTLPaxaM6eG\".to_string()],\n        mint_pubkey: \"Bq5nFQ82jBYcFKRzUSximpCmCg5t8L8tVMqsn612pump\".to_string(),\n        config: TokenCreationConfig {\n            token_creation: TokenCreation {\n                metadata: TokenCreationMetadata {\n                    name: \"Test Token\".to_string(),\n                    symbol: \"TEST\".to_string(),\n                    description: Some(\"A test token created with FURY SDK\".to_string()),\n                    telegram: None,\n                    twitter: None,\n                    website: None,\n                    file: \"https://example.com/logo.png\".to_string(),\n                },\n                default_sol_amount: 0.001,\n            },\n        },\n        amounts: vec![0.001],\n    }).await?;\n\n    println!(\"Token creation transactions: {:?}\", result);\n    Ok(())\n}\n```\n\n### Distribute Tokens to Multiple Wallets\n\n```rust\nuse anyhow::Result;\nuse fury_sdk::sdk::{FurySDK, WalletsDistributeRequest, WalletsDistributeRecipient};\n\n#[tokio::main]\nasync fn main() -\u003e Result\u003c()\u003e {\n    let http_client = reqwest::Client::new();\n    let fury = FurySDK::new(http_client);\n\n    // Define recipients\n    let recipients = vec![\n        WalletsDistributeRecipient { address: \"8fwjXcyQrCCkG5k3vHUioVLNbPr72otA59mmR1w6CwpS\".to_string(), amount: 0.01 },\n        WalletsDistributeRecipient { address: \"68qzyqvqX3eEGEfwa2ajsDKmEjhmU9XRj1VjcUPJNwpq\".to_string(), amount: 0.01 },\n    ];\n\n    // Distribute tokens\n    let result = fury.wallets_distribute(\u0026WalletsDistributeRequest {\n        sender: wallet.pubkey().to_string(),\n        recipients,\n    }).await?;\n\n    println!(\"Distribution transactions: {:?}\", result.transactions);\n    Ok(())\n}\n```\n\n### Error Handling\n\nThe SDK uses a custom `FuryError` enum for error handling:\n\n```rust\npub enum FuryError {\n    ApiError(ErrorResponse),\n    RequestError(reqwest::Error),\n    Other(anyhow::Error),\n}\n```\n\nExample: \n\n```rust\nuse fury_sdk::sdk::{FurySDK, WalletsDistributeRequest, WalletsDistributeRecipient};\n\n#[tokio::main]\nasync fn main() -\u003e Result\u003c()\u003e {\n    let http_client = reqwest::Client::new();\n    let fury = FurySDK::new(http_client);\n\n    // You can handle specific errors if necessary \n    let mint = match client.generate_mint().await {\n        Ok(key) =\u003e key,\n        Err(FuryError::ApiError(error)) =\u003e {\n            println!(\"Error: {:#?}\", error);\n            return Err(anyhow::anyhow!(\"API returned error: {:?}\", error));\n        }\n        Err(FuryError::RequestError(err)) =\u003e {\n            println!(\"Error: {:#?}\", err);\n            return Err(anyhow::anyhow!(\"Request error: {:?}\", err));\n        }\n        Err(FuryError::Other(err)) =\u003e {\n            println!(\"Other error: {:#?}\", err);\n            return Err(anyhow::anyhow!(\"Other error: {:?}\", err));\n        }\n    };\n    \n    // or handle them in a more generic way (uncomment below to see)\n    // let mint = match client.generate_mint().await {\n    //     Ok(key) =\u003e key,\n    //     Err(err) =\u003e {\n    //         println!(\"Error: {:#?}\", err);\n    //         return Err(anyhow::anyhow!(\"Error occurred: {:?}\", err));\n    //     }\n    // };\n\n    println!(\"Mint: {mint}\");\n    Ok(())\n}\n```\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffurydotbot%2Frust-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffurydotbot%2Frust-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffurydotbot%2Frust-sdk/lists"}