ore-api 2.0.0-alpha

API for interacting with the ORE program
Documentation
use bytemuck::{Pod, Zeroable};
use shank::ShankAccount;

use crate::utils::{impl_account_from_bytes, impl_to_bytes, Discriminator};

use super::AccountDiscriminator;

/// Bus accounts are responsible for distributing mining rewards.
/// There are 8 busses total to minimize write-lock contention and allow for parallel mine operations.
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq, Pod, ShankAccount, Zeroable)]
pub struct Bus {
    /// The ID of the bus account.
    pub id: u64,

    /// The remaining rewards this bus has left to payout in the current epoch.
    pub rewards: u64,

    /// The rewards this bus would have paid out in the current epoch if there no limit.
    /// Used to calculate the updated reward rate.
    pub theoretical_rewards: u64,
}

impl Discriminator for Bus {
    fn discriminator() -> u8 {
        AccountDiscriminator::Bus.into()
    }
}

impl_to_bytes!(Bus);
impl_account_from_bytes!(Bus);