use serde::{Deserialize, Serialize};
use crate::SyscallCode;
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
#[non_exhaustive]
pub enum RetainedEventsPreset {
Bls12381Field,
Bn254Field,
Sha256,
Poseidon2,
U256Ops,
Secp256k1,
}
impl RetainedEventsPreset {
#[must_use]
pub const fn syscall_codes(&self) -> &'static [SyscallCode] {
#[allow(clippy::enum_glob_use)]
use SyscallCode::*;
match self {
RetainedEventsPreset::Bls12381Field => {
&[BLS12381_FP_ADD, BLS12381_FP_MUL, BLS12381_FP_SUB]
}
RetainedEventsPreset::Bn254Field => &[BN254_FP_ADD, BN254_FP_MUL, BN254_FP_SUB],
RetainedEventsPreset::Sha256 => &[SHA_COMPRESS, SHA_EXTEND],
RetainedEventsPreset::Poseidon2 => &[POSEIDON2],
RetainedEventsPreset::U256Ops => &[UINT256_ADD_CARRY, UINT256_MUL_CARRY],
RetainedEventsPreset::Secp256k1 => &[SECP256K1_ADD, SECP256K1_DOUBLE],
}
}
}