Skip to main content

jito_restaking_core/
discriminators.rs

1use jito_bytemuck::Discriminator;
2
3use crate::{
4    config::Config, ncn::Ncn, ncn_operator_state::NcnOperatorState,
5    ncn_vault_slasher_ticket::NcnVaultSlasherTicket, ncn_vault_ticket::NcnVaultTicket,
6    operator::Operator, operator_vault_ticket::OperatorVaultTicket,
7};
8
9/// Discriminators for restaking accounts
10/// Values must not change as they are written on chain to determine the type of account
11#[derive(Debug, Clone, Copy, PartialEq, Eq)]
12pub enum RestakingDiscriminator {
13    Config = 1,
14    Ncn = 2,
15    Operator = 3,
16    NcnOperatorState = 4,
17    OperatorVaultTicket = 5,
18    NcnVaultTicket = 6,
19    NcnVaultSlasherTicket = 7,
20}
21
22impl Discriminator for Config {
23    const DISCRIMINATOR: u8 = RestakingDiscriminator::Config as u8;
24}
25
26impl Discriminator for Ncn {
27    const DISCRIMINATOR: u8 = RestakingDiscriminator::Ncn as u8;
28}
29
30impl Discriminator for Operator {
31    const DISCRIMINATOR: u8 = RestakingDiscriminator::Operator as u8;
32}
33
34impl Discriminator for NcnOperatorState {
35    const DISCRIMINATOR: u8 = RestakingDiscriminator::NcnOperatorState as u8;
36}
37
38impl Discriminator for OperatorVaultTicket {
39    const DISCRIMINATOR: u8 = RestakingDiscriminator::OperatorVaultTicket as u8;
40}
41
42impl Discriminator for NcnVaultTicket {
43    const DISCRIMINATOR: u8 = RestakingDiscriminator::NcnVaultTicket as u8;
44}
45
46impl Discriminator for NcnVaultSlasherTicket {
47    const DISCRIMINATOR: u8 = RestakingDiscriminator::NcnVaultSlasherTicket as u8;
48}