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}