helius-sdk 0.2.0

Rust implementation of the Helius SDK
Documentation
use crate::common::*;
use serde::{Deserialize, Serialize};
use serde_json::Value;


serializable! {
    pub struct Pagination {
        pub page: u32,
        pub limit: Option<u32>,
        pub before: Option<u32>,
        pub after: Option<u32>,
    }
}

serializable_camel_case! {
    pub struct SearchAssetsParams {
        #[serde(flatten)]
        pub pagination: Pagination,
        pub display_options: Option<DisplayOptions>,
        pub sort_by: Option<AssetSortingRequest>,
        pub creator_address: Option<String>,
        pub owner_address: Option<String>,
        pub json_uri: Option<String>,
        pub grouping: Option<Vec<String>>,
        pub burnt: Option<bool>,
        pub frozen: Option<bool>,
        pub supply_mint: Option<String>,
        pub supply: Option<u32>,
        pub interface: Option<Interface>,
        pub delegate: Option<u32>,
        pub owner_type: Option<OwnershipModel>,
        pub royalty_amount: Option<u32>,
        pub royalty_target: Option<String>,
        pub royalty_target_type: Option<RoyaltyModel>,
        pub compressible: Option<bool>,
        pub compressed: Option<bool>
    }
}

serializable_camel_case! {
    pub struct GetAssetsByGroupParams {
        pub group_value: String,
        pub group_key: String,
        #[serde(flatten)]
        pub pagination: Pagination,
        pub display_options: Option<DisplayOptions>,
        pub sort_by: Option<AssetSortingRequest>

    }
}

serializable_camel_case! {
    pub struct GetAssetsByCreatorParams {
        pub creator_address: String,
        #[serde(flatten)]
        pub pagination: Pagination,
        pub only_verified: Option<bool>,
        pub display_options: Option<DisplayOptions>,
        pub sort_by: Option<AssetSortingRequest>
    }
}

serializable_camel_case! {
    pub struct GetAssetsByAuthorityParams {
        pub authority_address: String,
        #[serde(flatten)]
        pub pagination: Pagination,
        pub display_options: Option<DisplayOptions>,
        pub sort_by: Option<AssetSortingRequest>
    }
}

serializable_camel_case! {
    pub struct GetAssetsByOwnerParams {
        pub owner_address: String,
        #[serde(flatten)]
        pub pagination: Pagination,
        pub display_options: Option<DisplayOptions>,
        pub sort_by: Option<AssetSortingRequest>
    }
}

serializable_camel_case! {
    pub struct AssetSortingRequest {
        pub sort_by: AssetSortBy,
        pub sort_direction: AssetSortDirection
    }
}

serializable! {
    pub struct GetAssetProofParams {
        pub id: String
    }
}

serializable! {
    pub struct GetAssetProofBatchParams {
        pub ids: Vec<String>
    }
}

serializable! {
    pub struct GetAssetProofResponse {
        pub root: String,
        pub proof: Vec<String>,
        pub node_index: u32,
        pub leaf: String,
        pub tree_id: String
    }
}

serializable! {
    pub struct GetAssetParams {
        pub id: String,
        #[serde[rename = "displayOptions"]]
        pub display_options: Option<DisplayOptions>
    }
}

serializable! {
    pub struct GetAssetBatchParams {
        pub ids: Vec<String>,
        #[serde[rename = "displayOptions"]]
        pub display_options: Option<DisplayOptions>
    }
}

serializable! {
    pub struct GetAssetResponse {
        pub interface: Interface,
        pub id: String,
        pub content: Option<Content>,
        pub authorities: Option<Vec<Authorities>>,
        pub compression: Option<Compression>,
        pub grouping: Option<Vec<Grouping>>,
        pub royalty: Option<Royalty>,
        pub ownership: Ownership,
        pub creators: Option<Vec<Creators>>,
        pub uses: Option<Uses>,
        pub supply: Option<Supply>,
        pub mutable: bool,
        pub burnt: bool
    }
}

serializable! {
    pub struct GetAssetResponseList {
        pub grand_total: Option<bool>,
        pub total: u32,
        pub limit: u32,
        pub page: u32,
        pub items: Vec<GetAssetResponse>
    }
}

serializable_camel_case! {
    pub struct DisplayOptions {
        pub show_fungible: Option<bool>,
        pub show_inscription: Option<bool>
    }
}

serializable! {
    pub struct Ownership {
        pub frozen: bool,
        pub delegated: bool,
        pub delegate: Option<String>,
        pub ownership_model: OwnershipModel,
        pub owner: String
    }
}

serializable! {
    pub struct Supply {
        pub print_max_supply: u32,
        pub print_current_supply: u32,
        pub edition_nonce: Option<u32>
    }
}
serializable! {
    pub struct Uses {
        pub use_method: UseMethods,
        pub remaining: u32,
        pub total: u32
    }
}

serializable! {
    pub struct Creators {
        pub address: String,
        pub share: u32,
        pub verified: bool
    }
}

serializable! {
    pub struct Royalty {
        pub royalty_model: RoyaltyModel,
        pub target: Option<String>,
        pub percent: f32,
        pub basis_points: u32,
        pub primary_sale_happened: bool,
        pub locked: bool
    }
}

serializable! {
    pub struct Grouping {
        pub group_key: String,
        pub group_value: String,
        pub verified: Option<bool>,
        pub collection_metadata: Option<CollectionMetadata>
    }
}

serializable! {
    pub struct CollectionMetadata {
        pub name: Option<String>,
        pub symbol: Option<String>,
        pub image: Option<String>,
        pub description: Option<String>,
        pub external_url: Option<String>
    }
}

serializable! {
    pub struct Authorities {
        pub address: String,
        pub scopes: Vec<Scope>
    }
}

serializable! {
    pub struct Links {
        pub external_url: Option<String>,
        pub image: Option<String>,
        pub animation_url: Option<String>
    }
}

serializable! {
    pub struct Content {
        #[serde(rename = "$schema")]
        pub schema: String,
        pub json_uri: String,
        pub files: Option<Vec<File>>,
        pub metadata: Metadata,
        pub links: Links
    }
}

serializable! {
    pub struct File {
        pub uri: Option<String>,
        pub mime: Option<String>,
        pub cdn_uri: Option<String>,
        pub quality: Option<FileQuality>,
        pub contexts: Option<Vec<Context>>
    }
}

serializable! {
    pub struct FileQuality {
        pub schema: String
    }
}

serializable! {
    pub struct Metadata {
        pub attributes: Option<Vec<Attribute>>,
        pub description: String,
        pub name: String,
        pub symbol: String
    }
}

serializable! {
    pub struct Attribute {
        pub value: Value,
        pub trait_type: String
    }
}

serializable! {
    pub struct Compression {
        pub eligible: bool,
        pub compressed: bool,
        pub data_hash: String,
        pub creator_hash: String,
        pub asset_hash: String,
        pub tree: String,
        pub seq: u32,
        pub leaf_id: u32
    }
}