use nym_credentials::ecash::bandwidth::CredentialSpendingData;
use nym_credentials_interface::TicketType;
use nym_crypto::asymmetric::ed25519;
use nym_ecash_time::OffsetDateTime;
use nym_validator_client::nym_api::EpochId;
pub use controller::BandwidthController;
pub use fetcher::NyxdGlobalDataFetcher;
pub use traits::{BandwidthTicketProvider, FetcherError};
pub mod acquire;
mod controller;
pub mod error;
mod fetcher;
pub mod mock;
pub mod requests;
mod traits;
mod utils;
pub const DEFAULT_TICKETS_TO_SPEND: u32 = 1;
pub const UPGRADE_MODE_JWT_TYPE: &str = "UPGRADE_MODE_JWT";
#[derive(Clone, Debug)]
pub struct PreparedCredential {
pub data: CredentialSpendingData,
pub epoch_id: EpochId,
pub metadata: PreparedCredentialMetadata,
}
#[derive(Copy, Clone, Debug)]
pub struct PreparedCredentialMetadata {
pub ticketbook_id: i64,
pub tickets_withdrawn: u32,
pub used_tickets: u32,
}
#[derive(Copy, Clone, Debug)]
pub struct EcashTicketRequest {
pub ticket_type: TicketType,
pub gateway_id: ed25519::PublicKey,
pub tickets_to_spend: u32,
pub spend_time: OffsetDateTime,
}