miner-api 0.1.0

Instructions, state and SDK for the MINER protocol - a proof-of-work mined SPL token where holdings boost mining power
Documentation
use solana_program::program_error::ProgramError;

/// Błędy programu (mapowane na ProgramError::Custom).
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u32)]
pub enum MinerError {
    /// Hash nie spełnia wymaganej trudności.
    InvalidHash = 0,
    /// Podane konto nie zgadza się z oczekiwanym PDA / właścicielem.
    InvalidAccount = 1,
    /// Zły dyskryminator konta.
    InvalidDiscriminator = 2,
    /// Podpisujący nie jest autoryzowany (ani authority, ani session key).
    Unauthorized = 3,
    /// Podana runda nie jest bieżącą rundą.
    RoundMismatch = 4,
    /// Miner już submitował w tej rundzie.
    AlreadySubmitted = 5,
    /// Runda jeszcze trwa (crank za wcześnie).
    RoundStillOpen = 6,
    /// Runda zbyt świeża, żeby ją zamknąć (retencja).
    RoundNotExpired = 7,
    /// Brak nagród do odebrania.
    NothingToClaim = 8,
    /// Konto tokenowe nie pasuje (mint/owner/ATA).
    InvalidTokenAccount = 9,
    /// Mint nie spełnia wymogów (authority/decimals/freeze).
    InvalidMint = 10,
    /// Przepełnienie arytmetyczne.
    Overflow = 11,
    /// Do rozliczenia poprzedniej rundy wymagane jest jej konto.
    SettlementRequired = 12,
}

impl From<MinerError> for ProgramError {
    fn from(e: MinerError) -> Self {
        ProgramError::Custom(e as u32)
    }
}