Skip to content

Commit

Permalink
Merge pull request #4 from helius-labs/dev
Browse files Browse the repository at this point in the history
[Merge] Dev -> Main
  • Loading branch information
0xIchigo committed May 8, 2024
2 parents 8aa336c + 672e4e6 commit 1b0c0ba
Show file tree
Hide file tree
Showing 34 changed files with 130 additions and 227 deletions.
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 1 addition & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
[package]
name = "helius_sdk"
name = "helius"
version = "0.1.0"
edition = "2021"
description ="An asynchronous Helius Rust SDK for building the future of Solana"
repository = "https://github.com/0xIchigo/helius-rust-sdk"
license = "MIT"
authors = ["0xIchigo <0xIchigo@protonmail.com>"]
documentation = "https://docs.helius.dev/"
readme = "README.md"
homepage = "https://www.helius.dev/"

Expand Down
25 changes: 6 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,31 +16,18 @@ Alternatively, use `cargo add helius_sdk` to add the dependency directly via the
Remember to run `cargo update` regularly to fetch the latest version of the SDK.

## Usage
The SDK needs to be configured with your account's API key, which can be found on the [Helius Developer Dashboard](https://dev.helius.xyz/dashboard/app). The following code is an example of how to use the SDK to fetch info on [Mad Lad #8420](https://xray.helius.xyz/token/F9Lw3ki3hJ7PF9HQXsBzoY8GyE6sPoEZZdXJBsTTD2rk?network=mainnet):
The SDK provides a [`Helius`](https://github.com/helius-labs/helius-rust-sdk/blob/dev/src/client.rs) instance that can be configured with an API key and a given Solana cluster. Developers can generate a new API key on the [Helius Developer Dashboard](https://dev.helius.xyz/dashboard/app). This instance acts as the main entry point for interacting with the SDK by providing methods to access different Solana and RPC client functionalities. The following code is an example of how to use the SDK to fetch info on [Mad Lad #8420](https://xray.helius.xyz/token/F9Lw3ki3hJ7PF9HQXsBzoY8GyE6sPoEZZdXJBsTTD2rk?network=mainnet):
```rust
use helius_sdk::config::Config;
use helius_sdk::error::HeliusError;
use helius_sdk::rpc_client::RpcClient;
use helius_sdk::types::types::{GetAssetResponseForAsset, DisplayOptions};
use helius_sdk::types::{Cluster, GetAssetRequest};

use reqwest::Client;
use std::sync::Arc;
use helius::error::HeliusError;
use helius::types::types::{GetAssetResponseForAsset, DisplayOptions};
use helius::types::{Cluster, GetAssetRequest};

#[tokio::main]
async fn main() -> Result<(), HeliusError> {
let api_key: &str = "YOUR_API_KEY";
let cluster: Cluster = Cluster::MainnetBeta;

let config: Arc<Config> = Arc::new(Config::new(api_key, cluster)?);
let client: Client = Client::new();
let rpc_client: Arc<RpcClient> = Arc::new(RpcClient::new(Arc::new(client.clone()), Arc::clone(&config)).unwrap());

let helius: Helius = Helius {
config,
client,
rpc_client,
};
let helius: Helius = Helius::new(api_key, cluster).unwrap();

let request: GetAssetRequest = GetAssetRequest {
id: "F9Lw3ki3hJ7PF9HQXsBzoY8GyE6sPoEZZdXJBsTTD2rk".to_string(),
Expand Down Expand Up @@ -84,7 +71,7 @@ If you encounter any of these errors:
- Refer to the [Helius documentation](https://docs.helius.dev/) for further guidance
- Reach out to the Helius support team for more detailed assistance

## Using the Helius SDK
## Methods
Our SDK is designed to provide a seamless developer experience when building on Solana. We've separated the core functionality into various segments:

### DAS API
Expand Down
21 changes: 4 additions & 17 deletions examples/get_asset_batch.rs
Original file line number Diff line number Diff line change
@@ -1,26 +1,13 @@
use helius_sdk::config::Config;
use helius_sdk::error::HeliusError;
use helius_sdk::rpc_client::RpcClient;
use helius_sdk::types::{Asset, Cluster, GetAssetBatch, GetAssetOptions};
use helius_sdk::Helius;

use reqwest::Client;
use std::sync::Arc;
use helius::error::HeliusError;
use helius::types::{Asset, Cluster, GetAssetBatch, GetAssetOptions};
use helius::Helius;

#[tokio::main]
async fn main() -> Result<(), HeliusError> {
let api_key: &str = "your_api_key";
let cluster: Cluster = Cluster::MainnetBeta;

let config: Arc<Config> = Arc::new(Config::new(api_key, cluster)?);
let client: Client = Client::new();
let rpc_client: Arc<RpcClient> = Arc::new(RpcClient::new(Arc::new(client.clone()), Arc::clone(&config)).unwrap());

let helius: Helius = Helius {
config,
client,
rpc_client,
};
let helius: Helius = Helius::new(api_key, cluster).unwrap();

let request: GetAssetBatch = GetAssetBatch {
ids: vec![
Expand Down
20 changes: 4 additions & 16 deletions examples/get_asset_proof_batch.rs
Original file line number Diff line number Diff line change
@@ -1,27 +1,15 @@
use helius_sdk::config::Config;
use helius_sdk::error::HeliusError;
use helius_sdk::rpc_client::RpcClient;
use helius_sdk::types::{AssetProof, Cluster, GetAssetProofBatch};
use helius_sdk::Helius;
use helius::error::HeliusError;
use helius::types::{AssetProof, Cluster, GetAssetProofBatch};
use helius::Helius;

use reqwest::Client;
use std::collections::HashMap;
use std::sync::Arc;

#[tokio::main]
async fn main() -> Result<(), HeliusError> {
let api_key: &str = "your_api_key";
let cluster: Cluster = Cluster::MainnetBeta;

let config: Arc<Config> = Arc::new(Config::new(api_key, cluster)?);
let client: Client = Client::new();
let rpc_client: Arc<RpcClient> = Arc::new(RpcClient::new(Arc::new(client.clone()), Arc::clone(&config)).unwrap());

let helius: Helius = Helius {
config,
client,
rpc_client,
};
let helius: Helius = Helius::new(api_key, cluster).unwrap();

let request: GetAssetProofBatch = GetAssetProofBatch {
ids: vec![
Expand Down
20 changes: 4 additions & 16 deletions examples/get_latest_blockhash.rs
Original file line number Diff line number Diff line change
@@ -1,28 +1,16 @@
use helius_sdk::config::Config;
use helius_sdk::error::HeliusError;
use helius_sdk::rpc_client::RpcClient;
use helius_sdk::types::*;
use helius_sdk::Helius;
use helius::error::HeliusError;
use helius::types::*;
use helius::Helius;

use reqwest::Client;
use solana_client::client_error::ClientError;
use solana_sdk::hash::Hash;
use std::sync::Arc;

#[tokio::main]
async fn main() -> Result<(), HeliusError> {
let api_key: &str = "your_api_key";
let cluster: Cluster = Cluster::MainnetBeta;

let config: Arc<Config> = Arc::new(Config::new(api_key, cluster)?);
let client: Client = Client::new();
let rpc_client: Arc<RpcClient> = Arc::new(RpcClient::new(Arc::new(client.clone()), Arc::clone(&config)).unwrap());

let helius: Helius = Helius {
config,
client,
rpc_client,
};
let helius: Helius = Helius::new(api_key, cluster).unwrap();

let result: Result<Hash, ClientError> = helius.connection().get_latest_blockhash();
println!("{:?}", result);
Expand Down
21 changes: 4 additions & 17 deletions examples/get_parse_transactions.rs
Original file line number Diff line number Diff line change
@@ -1,26 +1,13 @@
use helius_sdk::config::Config;
use helius_sdk::error::HeliusError;
use helius_sdk::rpc_client::RpcClient;
use helius_sdk::types::*;
use helius_sdk::Helius;

use reqwest::Client;
use std::sync::Arc;
use helius::error::HeliusError;
use helius::types::*;
use helius::Helius;

#[tokio::main]
async fn main() -> Result<(), HeliusError> {
let api_key: &str = "your_api_key";
let cluster: Cluster = Cluster::MainnetBeta;

let config: Arc<Config> = Arc::new(Config::new(api_key, cluster)?);
let client: Client = Client::new();
let rpc_client: Arc<RpcClient> = Arc::new(RpcClient::new(Arc::new(client.clone()), Arc::clone(&config)).unwrap());

let helius: Helius = Helius {
config,
client,
rpc_client,
};
let helius: Helius = Helius::new(api_key, cluster).unwrap();

let request: ParseTransactionsRequest = ParseTransactionsRequest {
transactions: vec![
Expand Down
19 changes: 4 additions & 15 deletions examples/get_parsed_transaction_history.rs
Original file line number Diff line number Diff line change
@@ -1,24 +1,13 @@
use helius_sdk::config::Config;
use helius_sdk::error::HeliusError;
use helius_sdk::rpc_client::RpcClient;
use helius_sdk::types::*;
use helius_sdk::Helius;
use std::sync::Arc;
use helius::error::HeliusError;
use helius::types::*;
use helius::Helius;

#[tokio::main]
async fn main() -> Result<(), HeliusError> {
let api_key: &str = "your_api_key";
let cluster: Cluster = Cluster::MainnetBeta;

let config: Arc<Config> = Arc::new(Config::new(api_key, cluster)?);
let client: reqwest::Client = reqwest::Client::new();
let rpc_client: Arc<RpcClient> = Arc::new(RpcClient::new(Arc::new(client.clone()), Arc::clone(&config)).unwrap());

let helius: Helius = Helius {
config,
client,
rpc_client,
};
let helius: Helius = Helius::new(api_key, cluster).unwrap();

let response: Result<Vec<EnhancedTransaction>, HeliusError> = helius
.parsed_transaction_history("2k5AXX4guW9XwRQ1AKCpAuUqgWDpQpwFfpVFh3hnm2Ha")
Expand Down
19 changes: 4 additions & 15 deletions examples/get_priority_fee_estimate.rs
Original file line number Diff line number Diff line change
@@ -1,24 +1,13 @@
use helius_sdk::config::Config;
use helius_sdk::error::HeliusError;
use helius_sdk::rpc_client::RpcClient;
use helius_sdk::types::*;
use helius_sdk::Helius;
use std::sync::Arc;
use helius::error::HeliusError;
use helius::types::*;
use helius::Helius;

#[tokio::main]
async fn main() -> Result<(), HeliusError> {
let api_key: &str = "your_api_key";
let cluster: Cluster = Cluster::MainnetBeta;

let config: Arc<Config> = Arc::new(Config::new(api_key, cluster)?);
let client: reqwest::Client = reqwest::Client::new();
let rpc_client: Arc<RpcClient> = Arc::new(RpcClient::new(Arc::new(client.clone()), Arc::clone(&config)).unwrap());

let helius: Helius = Helius {
config,
client,
rpc_client,
};
let helius: Helius = Helius::new(api_key, cluster).unwrap();

let request: GetPriorityFeeEstimateRequest = GetPriorityFeeEstimateRequest {
transaction: None,
Expand Down
19 changes: 4 additions & 15 deletions examples/mint_cnft.rs
Original file line number Diff line number Diff line change
@@ -1,25 +1,14 @@
use helius_sdk::config::Config;
use helius_sdk::error::HeliusError;
use helius_sdk::rpc_client::RpcClient;
use helius_sdk::types::*;
use helius_sdk::Helius;
use helius::error::HeliusError;
use helius::types::*;
use helius::Helius;
use serde_json::Value;
use std::sync::Arc;

#[tokio::main]
async fn main() -> Result<(), HeliusError> {
let api_key: &str = "your_api_key";
let cluster: Cluster = Cluster::MainnetBeta;

let config: Arc<Config> = Arc::new(Config::new(api_key, cluster)?);
let client: reqwest::Client = reqwest::Client::new();
let rpc_client: Arc<RpcClient> = Arc::new(RpcClient::new(Arc::new(client.clone()), Arc::clone(&config)).unwrap());

let helius: Helius = Helius {
config,
client,
rpc_client,
};
let helius: Helius = Helius::new(api_key, cluster).unwrap();

let request: MintCompressedNftRequest = MintCompressedNftRequest {
name: "Exodia the Forbidden One".to_string(),
Expand Down
4 changes: 2 additions & 2 deletions src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ impl Helius {
///
/// # Example
/// ```rust
/// use helius_sdk::client::Helius;
/// use helius_sdk::types::Cluster;
/// use helius::client::Helius;
/// use helius::types::Cluster;
///
/// let helius = Helius::new("your_api_key", Cluster::Devnet).expect("Failed to create a Helius client");
/// ```
Expand Down
8 changes: 4 additions & 4 deletions src/factory.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ impl HeliusFactory {
///
/// # Example
/// ```rust
/// use helius_sdk::HeliusFactory;
/// use helius::HeliusFactory;
/// let factory = HeliusFactory::new("your_api_key_here");
/// ```
pub fn new(api_key: &str) -> Self {
Expand All @@ -46,9 +46,9 @@ impl HeliusFactory {
///
/// # Example
/// ```rust
/// use helius_sdk::types::*;
/// use helius_sdk::client::Helius;
/// use helius_sdk::factory::HeliusFactory;
/// use helius::types::*;
/// use helius::client::Helius;
/// use helius::factory::HeliusFactory;
///
/// #[tokio::main]
/// async fn main() {
Expand Down
10 changes: 5 additions & 5 deletions tests/rpc/test_get_asset.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
use std::sync::Arc;

use helius_sdk::client::Helius;
use helius_sdk::config::Config;
use helius_sdk::error::HeliusError;
use helius_sdk::rpc_client::RpcClient;
use helius_sdk::types::*;
use helius::client::Helius;
use helius::config::Config;
use helius::error::HeliusError;
use helius::rpc_client::RpcClient;
use helius::types::*;

use mockito::{self, Server};
use reqwest::Client;
Expand Down
10 changes: 5 additions & 5 deletions tests/rpc/test_get_asset_batch.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
use std::sync::Arc;

use helius_sdk::client::Helius;
use helius_sdk::config::Config;
use helius_sdk::error::HeliusError;
use helius_sdk::rpc_client::RpcClient;
use helius_sdk::types::{
use helius::client::Helius;
use helius::config::Config;
use helius::error::HeliusError;
use helius::rpc_client::RpcClient;
use helius::types::{
ApiResponse, Asset, Attribute, Authorities, Cluster, CollectionMetadata, Compression, Content, Creator, File,
GetAssetBatch, GetAssetOptions, Group, HeliusEndpoints, Interface, Links, Metadata, Ownership, OwnershipModel,
Royalty, RoyaltyModel, Scope, Supply,
Expand Down
10 changes: 5 additions & 5 deletions tests/rpc/test_get_asset_proof.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
use std::sync::Arc;

use helius_sdk::client::Helius;
use helius_sdk::config::Config;
use helius_sdk::error::HeliusError;
use helius_sdk::rpc_client::RpcClient;
use helius_sdk::types::*;
use helius::client::Helius;
use helius::config::Config;
use helius::error::HeliusError;
use helius::rpc_client::RpcClient;
use helius::types::*;

use mockito::{self, Server};
use reqwest::Client;
Expand Down
10 changes: 5 additions & 5 deletions tests/rpc/test_get_asset_proof_batch.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
use std::collections::HashMap;
use std::sync::Arc;

use helius_sdk::client::Helius;
use helius_sdk::config::Config;
use helius_sdk::error::HeliusError;
use helius_sdk::rpc_client::RpcClient;
use helius_sdk::types::*;
use helius::client::Helius;
use helius::config::Config;
use helius::error::HeliusError;
use helius::rpc_client::RpcClient;
use helius::types::*;

use mockito::{self, Server};
use reqwest::Client;
Expand Down
10 changes: 5 additions & 5 deletions tests/rpc/test_get_assets_by_authority.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
use helius_sdk::config::Config;
use helius_sdk::error::Result;
use helius_sdk::rpc_client::RpcClient;
use helius_sdk::types::{
use helius::config::Config;
use helius::error::Result;
use helius::rpc_client::RpcClient;
use helius::types::{
ApiResponse, Asset, AssetList, Attribute, Authorities, Cluster, Compression, Content, Creator, File,
GetAssetsByAuthority, Group, HeliusEndpoints, Interface, Links, Metadata, Ownership, OwnershipModel, Royalty,
RoyaltyModel, Scope, Supply,
};
use helius_sdk::Helius;
use helius::Helius;

use mockito::{self, Server};
use reqwest::Client;
Expand Down
Loading

0 comments on commit 1b0c0ba

Please sign in to comment.