Skip to main content

miner_api/
error.rs

1use solana_program::program_error::ProgramError;
2
3/// Błędy programu (mapowane na ProgramError::Custom).
4#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5#[repr(u32)]
6pub enum MinerError {
7    /// Hash nie spełnia wymaganej trudności.
8    InvalidHash = 0,
9    /// Podane konto nie zgadza się z oczekiwanym PDA / właścicielem.
10    InvalidAccount = 1,
11    /// Zły dyskryminator konta.
12    InvalidDiscriminator = 2,
13    /// Podpisujący nie jest autoryzowany (ani authority, ani session key).
14    Unauthorized = 3,
15    /// Podana runda nie jest bieżącą rundą.
16    RoundMismatch = 4,
17    /// Miner już submitował w tej rundzie.
18    AlreadySubmitted = 5,
19    /// Runda jeszcze trwa (crank za wcześnie).
20    RoundStillOpen = 6,
21    /// Runda zbyt świeża, żeby ją zamknąć (retencja).
22    RoundNotExpired = 7,
23    /// Brak nagród do odebrania.
24    NothingToClaim = 8,
25    /// Konto tokenowe nie pasuje (mint/owner/ATA).
26    InvalidTokenAccount = 9,
27    /// Mint nie spełnia wymogów (authority/decimals/freeze).
28    InvalidMint = 10,
29    /// Przepełnienie arytmetyczne.
30    Overflow = 11,
31    /// Do rozliczenia poprzedniej rundy wymagane jest jej konto.
32    SettlementRequired = 12,
33}
34
35impl From<MinerError> for ProgramError {
36    fn from(e: MinerError) -> Self {
37        ProgramError::Custom(e as u32)
38    }
39}