use bytemuck::{Pod, Zeroable}; use num_enum::TryFromPrimitive; use steel::*; #[repr(u8)] #[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)] pub enum OreInstruction { // User Claim = 0, Close = 1, Mine = 2, Open = 3, Reset = 4, Stake = 5, Update = 6, Upgrade = 7, // Admin Initialize = 100, } #[repr(C)] #[derive(Clone, Copy, Debug, Pod, Zeroable)] pub struct Claim { pub amount: [u8; 8], } #[repr(C)] #[derive(Clone, Copy, Debug, Pod, Zeroable)] pub struct Close {} #[repr(C)] #[derive(Clone, Copy, Debug, Pod, Zeroable)] pub struct Mine { pub digest: [u8; 16], pub nonce: [u8; 8], } #[repr(C)] #[derive(Clone, Copy, Debug, Pod, Zeroable)] pub struct Open { pub bump: u8, } #[repr(C)] #[derive(Clone, Copy, Debug, Pod, Zeroable)] pub struct Reset {} #[repr(C)] #[derive(Clone, Copy, Debug, Pod, Zeroable)] pub struct Stake { pub amount: [u8; 8], } #[repr(C)] #[derive(Clone, Copy, Debug, Pod, Zeroable)] pub struct Update {} #[repr(C)] #[derive(Clone, Copy, Debug, Pod, Zeroable)] pub struct Upgrade { pub amount: [u8; 8], } #[repr(C)] #[derive(Clone, Copy, Debug, Pod, Zeroable)] pub struct Initialize { pub bus_0_bump: u8, pub bus_1_bump: u8, pub bus_2_bump: u8, pub bus_3_bump: u8, pub bus_4_bump: u8, pub bus_5_bump: u8, pub bus_6_bump: u8, pub bus_7_bump: u8, pub config_bump: u8, pub metadata_bump: u8, pub mint_bump: u8, pub treasury_bump: u8, } instruction!(OreInstruction, Claim); instruction!(OreInstruction, Close); instruction!(OreInstruction, Mine); instruction!(OreInstruction, Open); instruction!(OreInstruction, Reset); instruction!(OreInstruction, Stake); instruction!(OreInstruction, Update); instruction!(OreInstruction, Upgrade); instruction!(OreInstruction, Initialize);