use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct MarketplaceSnapshot {
pub token_address: String,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct MarketplaceSnapshotAttributes {
#[serde(rename = "Background")]
pub background: MarketplaceSnapshotAttribute,
#[serde(rename = "Clothing")]
pub clothing: MarketplaceSnapshotAttribute,
#[serde(rename = "Hair")]
pub hair: MarketplaceSnapshotAttribute,
#[serde(rename = "Mask")]
pub mask: MarketplaceSnapshotAttribute,
#[serde(rename = "Skin")]
pub skin: MarketplaceSnapshotAttribute,
#[serde(rename = "Special")]
pub special: MarketplaceSnapshotAttribute,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct MarketplaceSnapshotAttribute {
pub value: String,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct MarketplaceSnapshotBidSnapshot {
pub amount: Option<String>,
pub block_number: Option<String>,
pub block_timestamp: Option<String>,
pub buyer_address: Option<String>,
pub buyer_referral_address: Option<String>,
pub buyer_referral_fee: Option<String>,
pub created_at: Option<String>,
pub currency: Option<String>,
pub currency_price: Option<String>,
pub decimal: Option<String>,
pub display_price: Option<String>,
pub escrow_address: Option<String>,
pub expiry_time: Option<String>,
pub fee: Option<String>,
pub metadata: Option<Metadata>,
pub price: Option<String>,
pub program_fee_address: Option<String>,
pub program_id: Option<String>,
pub program_instance_id: Option<String>,
pub project_id: String,
pub token_address: String,
pub tx_id: Option<String>,
pub updated_at: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct MarketplaceSnapshotListingSnapshot {
pub amount: Option<u64>,
pub block_number: Option<u64>,
pub block_timestamp: Option<u64>,
pub created_at: Option<String>,
pub currency: Option<String>,
pub currency_price: Option<f64>,
pub decimal: Option<u64>,
pub display_price: Option<f64>,
pub escrow_address: Option<String>,
pub expiry_time: Option<String>,
pub fee: Option<f64>,
pub listing_type: String,
pub marketplace_config: MarketplaceSnapshotMarketplaceConfig,
pub metadata: Option<Metadata>,
pub price: Option<f64>,
pub program_fee_address: Option<String>,
pub program_id: Option<String>,
pub program_instance_id: Option<String>,
pub project_id: String,
pub seller_address: Option<String>,
pub seller_referral_address: Option<String>,
pub seller_referral_fee: Option<f64>,
pub token_address: String,
pub tx_id: Option<String>,
pub updated_at: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct MarketplaceSnapshotMarketplaceConfig {
pub display_name: Option<String>,
pub id: Option<String>,
pub img_url: Option<String>,
pub is_bidding_enabled: Option<String>,
pub is_bulk_buy_enabled: Option<String>,
pub is_buying_enabled: Option<String>,
pub is_delisting_enabled: Option<String>,
pub is_listing_enabled: Option<String>,
pub is_sweeping_enabled: Option<String>,
pub item_path: Option<String>,
pub program_id: Option<String>,
pub program_instance_id: Option<String>,
pub protocol: Option<String>,
pub should_redirect: Option<String>,
pub website: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct MarketplaceSnapshotProjectMetadata {
pub allow_list_id: Option<String>,
pub contract_address: String,
pub minimum_royalty: Option<String>,
pub orderbook_id: Option<String>,
pub royalty_strategy_id: String,
pub token_type: Option<String>,
pub transfer_policy_id: Option<String>,
pub withdraw_policy_id: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct MarketplaceSnapshotRaritySnapshot {
pub hyperspace: Option<String>,
pub project_id: Option<String>,
pub token_address: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct CollectionStats {
pub average_price: f64,
pub average_price_1day_change: f64,
pub average_price_7day_change: f64,
pub created_at: String,
pub discord_members: Option<u64>,
pub feeless_floor_price: f64,
pub floor_price: f64,
pub floor_price_1day_change: f64,
pub market_cap: u64,
pub max_price: u64,
pub num_of_token_holders: u64,
pub num_of_token_listed: u64,
pub percentage_of_token_listed: f64,
pub project: Project,
pub project_id: String,
pub rank: Option<u64>,
pub raw_market_cap: u64,
pub raw_volume: Option<u64>,
pub raw_volume_1day: f64,
pub raw_volume_1day_change: f64,
pub raw_volume_1hr: f64,
pub raw_volume_7day: f64,
pub raw_volume_7day_change: f64,
pub supply: u64,
pub twitter_followers: Option<u64>,
pub updated_at: String,
pub volume: Option<u64>,
pub volume_15m: Option<u64>,
pub volume_1day: f64,
pub volume_1day_change: f64,
pub volume_1hr: f64,
pub volume_1m: Option<u64>,
pub volume_30m: Option<u64>,
pub volume_5m: Option<u64>,
pub volume_7day: f64,
pub volume_7day_change: f64,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct Project {
pub allow_list_id: Option<u64>,
pub banner_url: String,
pub contract_address: String,
pub created_at: Option<String>,
pub description: String,
pub discord: Option<String>,
pub display_id: Option<u64>,
pub display_name: String,
pub display_name_type: String,
pub img_url: String,
pub is_launchpad: bool,
pub is_trading_disabled: bool,
pub is_trading_enabled: bool,
pub is_verified: bool,
pub launch_date: Option<String>,
pub launch_timestamp: Option<String>,
pub launchpad_details: Option<String>,
pub metadata: CollectionMetadata,
pub minimum_royalty: Option<String>,
pub orderbook_id: Option<u64>,
pub project_attributes: Option<String>,
pub project_id: String,
pub project_identifiers: Option<String>,
pub project_slug: String,
pub protocol: String,
pub rarities: Option<String>,
pub rewards_earning: bool,
pub royalty: Option<String>,
pub royalty_strategy_id: Option<String>,
pub short_description: Option<String>,
pub supply: u64,
pub token_type: Option<String>,
pub transfer_policy_id: Option<String>,
pub twitter: String,
pub updated_at: Option<String>,
pub website: String,
pub withdraw_policy_id: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct CollectionMetadata {
pub allow_list_id: Option<u64>,
pub orderbook_id: Option<u64>,
pub royalty_strategy_id: String,
pub token_type: Option<String>,
pub transfer_policy_id: Option<String>,
pub withdraw_policy_id: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct Bid {
pub amount: u64,
pub block_number: u64,
pub block_timestamp: u64,
pub buyer_address: String,
pub buyer_referral_address: String,
pub buyer_referral_fee: f64,
pub created_at: String,
pub currency: String,
pub currency_price: f64,
pub decimal: u64,
pub display_price: f64,
pub expiration: Option<String>,
pub expiry_time: Option<String>,
pub fee: f64,
pub fee_address: Option<String>,
pub identifier_index: u64,
pub identifier_key: String,
pub identifier_type: String,
pub instruction_index: Option<String>,
pub metadata: Metadata,
pub price: f64,
pub program_id: String,
pub program_instance_id: String,
pub protocol: Option<String>,
pub seller_address: String,
pub seller_referral_address: String,
pub seller_referral_fee: f64,
pub trade_state: String,
pub tx_id: String,
pub r#type: String,
pub updated_at: String,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct Metadata {
pub event_log: EventLog,
pub is_offchain: bool,
pub raw_total_price: String,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct EventLog {
pub direction: u64,
#[serde(rename = "erc20Token")]
pub erc20_token: String,
#[serde(rename = "erc20TokenAmount")]
pub erc20_token_amount: String,
#[serde(rename = "erc721Token")]
pub erc721_token: String,
#[serde(rename = "erc721TokenId")]
pub erc721_token_id: String,
#[serde(rename = "erc721TokenProperties")]
pub erc721_token_properties: Vec<Erc721TokenProperties>,
pub expiry: String,
pub fees: Vec<Fee>,
pub maker: String,
pub nonce: String,
#[serde(rename = "rawSignature")]
pub raw_signature: String,
pub signature: Signature,
pub taker: String,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct Erc721TokenProperties {
#[serde(rename = "propertyData")]
pub property_data: Vec<String>,
#[serde(rename = "propertyValidator")]
pub property_validator: String,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct Fee {
pub amount: String,
#[serde(rename = "feeData")]
pub fee_data: String,
pub recipient: String,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct Signature {
pub r: String,
pub s: String,
#[serde(rename = "signatureType")]
pub signature_type: u64,
pub v: u64,
}
#[derive(Debug, Serialize)]
pub(crate) struct PaginationConfig {
pub(crate) page_number: u64,
pub(crate) page_size: Option<u64>,
}
impl PaginationConfig {
pub(crate) fn new(page_number: u64, page_size: Option<u64>) -> Self {
Self {
page_number,
page_size,
}
}
pub(crate) fn default() -> Self {
Self {
page_number: 1,
page_size: Some(32),
}
}
}
#[derive(Debug, Deserialize)]
pub(crate) struct PaginationInfo {
pub(crate) current_page_number: u64,
pub(crate) current_page_size: u64,
pub(crate) has_next_page: bool,
pub(crate) total_page_number: Option<u64>,
}